확인란 어레이에서는 요소가 존재하는 경우

나는 지금 이 함수를 사용하여 확인하려면 다음과 같습니다.

function inArray(needle,haystack)
{
    var count=haystack.length;
    for(var i=0;i<count;i++)
    {
        if(haystack[i]===needle){return true;}
    }
    return false;
}

작동하잖아. # 39 m, 어떤 I& 찾는 수행할 수 있는지의 여부가 더 좋은 방법이 있습니다.

질문에 대한 의견 (4)
해결책
[1, 2, 3].includes(2);     // true
[1, 2, 3].includes(4);     // false
[1, 2, 3].includes(1, 2);  // false (second parameter is the index position in this array at which to begin searching)
  • 2018년 7월 현재, 이 [구현되어 있습니다] [2] 의 거의 모든 주요 , 브라우저를 지원해야 하는 경우에는 IE 는 [폴리필] [3] 은 available.*

[2]: https://caniuse.com/ # 성과 = 어레이입니다 dm_ownerdm_owner [3]: # 폴리필 https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/array/includes

편집: 참고로 이 항목의 경우 거짓값 되돌려줍니다 배열은 객체에는. Javascript 에서 두 개의 서로 다른 객체에 유사한 객체는 때문이다.

해설 (10)
  • 번호:*
function isInArray(value, array) {
  return array.indexOf(value) > -1;
}
  • Execution:*
isInArray(1, [1,2,3]); // true
  • 업데이트 (2017년) *

최근의 브라우저에서 따라 2016년 ecma 스크립트 기능을 사용할 수 있습니다 (es7) 다음영업일 있는 [아리스프로토티페스의 크루즈] (https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/includes) 이 존재하는 경우 확인할 수 있도록 하는 방법을 항목이 더 쉽게 어레이에서는:

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;

const array = [1, 2, 3];
const value = 1;
const isInArray = array.includes(value);
console.log(isInArray); // true

끝 - &lt 스니핏 >;!

해설 (7)

&Gt indexof (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf&quot) ',' a href = &quot &lt 됩니다;;;;; /a&gt &lt.

haystack.indexOf(needle) >= 0

스케쳐내 이전 지원하기 위해 Internet explorer (&lt. Ie9), you& # 39, ll, a href = &quot &gt 있습니다 https://stackoverflow.com/questions/1744310/how-to-fix-array-indexof-in-javascript-for-ie-browsers &quot &lt 할, 현재 코드 해결 방법으로 though&lt /a>.;;;

이 목록에 없는 한, 모든 가치를 부여하는 데 필요한 정렬할지 비교하십시오 바늘. 이에 따라 솔루션 모두 n/2 '비교' 와 '평균' 실행하십시오 indexOf 할 것으로 보인다. 그러나 '는' indexOf 내장현 방법을 추가 최적화 및 약간 빠른 실제로 사용할 수 있습니다. 단, 응용 프로그램을 검색할 경우 매우 자주 열거합니다 (라고 1000년 배 per second) 또는 (말하도다 100k 엔트리입니다), 스피드 차이는 엄청납니다 열거합니다 거역한다면 중요하지 않습니다.

해설 (6)

I feel free to it 에 대한 여러 번 있지만, 이 구글 크롬 52tb 벤치 마크 코피파스테 다른 browser& # 39 의 콘솔이군요.

  • ~ 1500년) 에는 ms (~ 2700 밀리초입니다 사용할 때 나는 폴리필)
var array = [0,1,2,3,4,5,6,7,8,9]; 
var result = 0;

var start = new Date().getTime();
for(var i = 0; i < 10000000; i++)
{
  if(array.includes("test") === true){ result++; }
}
console.log(new Date().getTime() - start);
  • ~ 1050년 마이크로소프트 (ms) 가 indexof
var array = [0,1,2,3,4,5,6,7,8,9]; 
var result = 0;

var start = new Date().getTime();
for(var i = 0; i < 10000000; i++)
{
  if(array.indexOf("test") > -1){ result++; }
}
console.log(new Date().getTime() - start);
  • ~ 650 밀리초입니다, 사용자 정의 함수
function inArray(target, array)
{

/* Caching array.length doesn't increase the performance of the for loop on V8 (and probably on most of other major engines) */

  for(var i = 0; i < array.length; i++) 
  {
    if(array[i] === target)
    {
      return true;
    }
  }

  return false; 
}

var array = [0,1,2,3,4,5,6,7,8,9]; 
var result = 0;

var start = new Date().getTime();
for(var i = 0; i < 10000000; i++)
{
  if(inArray("test", array) === true){ result++; }
}
console.log(new Date().getTime() - start);
해설 (1)

싱글 (line code. 참 / 거짓 반환되므로

!!(arr.indexOf("val")+1)
해설 (4)

하지만 작동안함 더불어 indexOf 사용할 수 있습니다 '마지막 버전의 인터넷 익스플로러.

  • 번호:*
function isInArray(value, array) {
  return array.indexOf(value) > -1;
}
  • Execution:*
isInArray(1, [1,2,3]); // true

난 다음 코드를 사용하는 것이 좋습니다.

function inArray(needle, haystack) {
 var length = haystack.length;
 for (var i = 0; i < length; i++) {
 if (haystack[i] == needle)
  return true;
 }
 return false;
}
해설 (0)

[_Contains] 사용할 수 있습니다 (http://underscorejs.org/ # 포함) 에서 함수은 언더스코엘가이스 라이브러리란 이를 위해서는:

if (_.contains(haystack, needle)) {
  console.log("Needle found.");
};
해설 (2)

1 세트, 이후 ECMAScript6 사용할 수 있습니다.

var myArray = ['A', 'B', 'C'];
var mySet = new Set(myArray);
var hasB = mySet.has('B'); // true
var hasZ = mySet.has('Z'); // false
해설 (0)

39 의 크기에 따라, re you& 바늘 찾는 '라이트필터' 유용할 수 있습니다. # 39 의 here& 예:

let filtered, arr = ['Haystack', 'Needle'];
filtered = arr.filter((elem) => {
  return elem.toLowerCase() === 'needle';
});
// filtered => ['needle']
해설 (0)

로다시 [.includes] [1] 에서 사용할 수 있습니다 (이 역시 앨리어스를 .contains)

전체 어레이입니다 검색할 수 있습니다.

_.includes([1, 2, 3], 1); // true

어레이입니다 시작 인덱스화할 에서 검색할 수 있습니다.

_.includes([1, 2, 3], 1, 1);  // false (begins search at index 1)

검색 문자열으로:

_.includes('pebbles', 'eb');  // true (string contains eb)

또한 확인하는 간단한 어레이에는 작동됨 객체.

_.includes({ 'user': 'fred', 'age': 40 }, 'fred');    // true
_.includes({ 'user': 'fred', 'age': false }, false);  // true

마지막 비유하사 대해 유의할 작동하잖아 프리미티브를 문장열, 숫자, 불 (bool) 값들 하지만 어레이나 객체에는 통해 같은 대한 검색할 수 없습니다.

_.includes({ 'user': 'fred', 'age': {} }, {});   // false
_.includes({ 'user': [1,2,3], 'age': {} }, 3);   // false

[1]: https://lodash.com/docs # dm_ownerdm_owner

해설 (0)