我想知道它之间的区别:
function doesCodeExist(arrvalidcodes, code) {
var hit = arrvalidcodes.filter(function(item){
return (code === item)
}).map(function(item){
return true;
});
if (hit[0] === true) {
return true;
} else {
return false;
}
}
和此:
function doesCodeExist(arrvalidcodes, code) {
for (var i = 0; i < arrvalidcodes.lenght; i++) {
if (arrvalidcodes[i] === code) {
return true;
}
}
return false;
}
两个代码应该做同样的事情,如果代码在提供的数组中,则返回true
或以其他方式返回false
。
哪种被认为最具可读性,哪种更有效?
答案 0 :(得分:2)
当然你的第一个代码更糟糕,因为它分配了各种无用的数组并且不可读。
如果您需要语义ES5数组方法,请使用some
:
function doesCodeExist(arrvalidcodes, code) {
return arrvalidcodes.some(function(item){
return code === item;
});
}
当然,对于严格的比较,你应该使用indexOf
,或者你想要一个SameValueZero比较用includes
。
答案 1 :(得分:1)
您可以使用Array#indexOf
indexOf()
方法返回可在数组中找到给定元素的第一个索引,如果不存在则返回-1
。
function doesCodeExist(arrvalidcodes, code) {
return arrvalidcodes.indexOf(code) !== -1;
}
或使用ES6使用Array#includes