JS有什么办法可以快速找出数组里是否有某个值?
这是我常用的方法,感觉好累赘,有没有社么好办法?
function contains(arr, val) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] === val) {
return true;
}
}
}
JS有什么办法可以快速找出数组里是否有某个值?
这是我常用的方法,感觉好累赘,有没有社么好办法?
function contains(arr, val) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] === val) {
return true;
}
}
}
var arr = [1, 2, 3, 4, 5, 6, 7]; // array
var wanted = 8; // any value you want to check
// console.log `true` if found, otherwise `false`
// Browser compatibility: IE9+
console.log(arr.some(function(item) { return item === wanted; }));
// console.log `index` of the value if found, otherwise -1.
// Browser compatibility: IE9+
console.log(arr.indexOf(wanted));
Array.prototype.in_array = function(search) {
for(i=0; i<this.length; i++) {
if(this[i]==search) {
return true;
}
}
return false;
}
给Array增加一个原型方法,这样所有的数组都通用了,和原生的一些通用Array方法都通用了
js
Array.prototype.includes()
好吧,这是一个Harmony (ECMAScript 7) proposal。
Polyfill:
js
if (![].includes) { Array.prototype.includes = function(searchElement /*, fromIndex*/ ) { if (this === undefined || this === null) { throw new TypeError('Cannot convert this value to object'); } var O = Object(this); var len = parseInt(O.length) || 0; if (len === 0) { return false; } var n = parseInt(arguments[1]) || 0; var k; if (n >= 0) { k = n; } else { k = len + n; if (k < 0) k = 0; } while (k < len) { var currentElement = O[k]; if (searchElement === currentElement || (searchElement !== searchElement && currentElement !== currentElement)) { return true; } k++; } return false; } }
可以用数组的some
方法:
array.some(function(currentValue,index,arr){ ...someCode })
currentValue
:必选。当前元素。index
:可选。当前元素索引值。arr
:可选。当前元素所属的数组对象。遍历数组中每个元素,判断其是否满足指定函数的指定条件,返回true或者false
判断数组中是否含有“10”
const arr = [2,5,45,7,8,35];
arr.some( item =>{
item == 10
})
//false
13 回答13k 阅读
8 回答2.8k 阅读
2 回答5.2k 阅读✓ 已解决
5 回答1.4k 阅读
7 回答2.2k 阅读
3 回答1.1k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决