prosource

자바스크립트에서 Array.any?와 동등한 것은 무엇입니까?

probook 2023. 10. 5. 23:23
반응형

자바스크립트에서 Array.any?와 동등한 것은 무엇입니까?

비어 있으면 true 또는 false를 반환하는 자바스크립트를 위한 방법을 찾고 있습니다...루비 같은 것any?아니면empty?

[].any? #=> false
[].empty? #=> true

자바스크립트 네이티브 메소드는 사용자가 원하는 것을 정확히 수행합니다.

function isBiggerThan10(element, index, array) {
  return element > 10;
}

[2, 5, 8, 1, 4].some(isBiggerThan10);  // false
[12, 5, 8, 1, 4].some(isBiggerThan10); // true

자바스크립트의 메소드는 다음과 같습니다.

[1, 2, 3].some((num) => num % 2 === 0);  

돌아온다true배열에 적어도 하나의 짝수가 있기 때문입니다.

일반적으로 자바스크립트의 표준 라이브러리에 있는 클래스는 루비의 Enumerable에 비해 상당히 열악합니다.없습니다.isEmpty방법과.some()함수를 전달해야 합니다 그렇지 않으면undefined is not a function오류. 당신은 당신 자신을 정의할 수 있습니다..isEmpty()뿐만 아니라.any()루비의 이런 모습에 더 가깝습니다.

Array.prototype.isEmpty = function() {
    return this.length === 0;
}

Array.prototype.any = function(func) {
   return this.some(func || function(x) { return x });
}

언더스코어.jslodash와 같은 라이브러리는 이러한 도우미 메소드를 제공합니다. 루비의 수집 메소드에 익숙하다면 프로젝트에 이 메소드를 포함시키는 것이 타당할 수도 있습니다.

파티에 좀 늦었지만...

[].some(x => !!x)
var a = [];
a.length > 0

저는 그냥 길이만 확인하겠습니다.원한다면 도우미 방식으로 포장할 수도 있습니다.

이것이 가장 깨끗하고 읽을 수 있는 옵션이라고 생각합니다.

var empty = [];
empty.some(x => x); //returns false

자바스크립트 배열은 어떤 의미에서는 배열 길이가 0이 아닌 경우에도 "빈" 상태가 될 수 있습니다.예를 들어,

var empty = new Array(10);
var howMany = empty.reduce(function(count, e) { return count + 1; }, 0);

변수 "How Many"는 다음과 같이 설정됩니다.0, 비록 배열이 다음의 길이를 갖도록 초기화되었지만.10.

따라서 많은 배열 반복 함수가 실제로 값이 할당된 배열의 요소에만 주의를 기울이기 때문에 이 호출과 같은 것을 사용하여 다음을 수행할 수 있습니다..some()배열에 실제로 무언가가 있는지 확인하려면:

var hasSome = empty.some(function(e) { return true; });

콜백은 다음으로 넘어갔습니다..some()돌아올 것입니다true호출될 때마다 반복 메커니즘이 검사할 가치가 있는 배열의 요소를 찾는다면 결과는true.

그냥 사용.Array.length:

var arr = [];

if (arr.length)
   console.log('not empty');
else
   console.log('empty');

MDN 참조

정말로 문제가 되고 싶다면 프로토타입에 새로운 방법을 추가합니다.

if (!('empty' in Array.prototype)) {
  Array.prototype.empty = function () {
    return this.length === 0;
  };
}

[1, 2].empty() // false
[].empty() // true

데모

당신이 원하는 것은.empty것은 아니다..empty()루비를 완벽하게 모방합니다.

     Object.defineProperty( Array.prototype, 'empty', {
           get: function ( ) { return this.length===0 }
      } );    

그리고나서

[].empty //true
[3,2,8].empty //false

어떤 것이든, 여기서 내 대답을 보세요.

폴리필* :

Array.prototype.any=function(){
    return (this.some)?this.some(...arguments):this.filter(...arguments).reduce((a,b)=> a || b)
};

루비라고 부르고 싶다면, 그 의미는.any것은 아니다..any(), 사용:

Object.defineProperty( Array.prototype, 'any', {
  get: function ( ) { return (this.some)?this.some(function(e){return e}):this.filter(function(e){return e}).reduce((a,b)=> a || b) }
} ); 

__

`* : https://en.wikipedia.org/wiki/Polyfill

배열에 길이 속성이 있습니다.

[].length // 0
[0].length // 1
[4, 8, 15, 16, 23, 42].length // 6

주석 중 하나에서 제안한 것처럼 배열에 요소가 포함되어 있는지 확인하는 것은 일부 요소를 간단히 사용하여 수행할 수 있습니다.

let hasItems = array.some(x => true);
let isEmpty = !array.some(x => true);

3항 연산자만 사용

let myArray = []
myArray && myArray.length ? console.log(true) : console.log(false)

언급URL : https://stackoverflow.com/questions/28350292/what-is-the-equivalent-of-array-any-in-javascript

반응형