有没有更好的方法来查找值?
let arrData = [[1, 0], [74, 0], [75, 1], [76, 1], [79, 1], [80, 0], [81, 0], [82, 0], [83, 1], [84, 0], [85, 0], [86, 0]];
let isn = 75;
function searchCount(arr, isn) {
for(var i = 0; i < arr.length; i++){
if(arr[i][0] == isn){
return arr[i][1];
}
}
}
console.log(searchCount(arrData, isn));
答案 0 :(得分:3)
您可以使用Array#find
。
如果数组中的元素满足提供的测试函数,
find()
方法将返回数组中的值。否则返回undefined
。
let arrData = [[1, 0], [74, 0], [75, 1], [76, 1], [79, 1], [80, 0], [81, 0], [82, 0], [83, 1], [84, 0], [85, 0], [86, 0]];
let isn = 75;
function searchCount(arr, isn) {
var el = arr.find(a => a[0] === isn);
return el && el[1];
}
console.log(searchCount(arrData, isn));
或使用Map
结合使用
Map
对象是一个简单的键/值映射。任何值(对象和原始值)都可以用作键或值。
get()
方法从Map
对象返回指定的元素。
let arrData = [[1, 0], [74, 0], [75, 1], [76, 1], [79, 1], [80, 0], [81, 0], [82, 0], [83, 1], [84, 0], [85, 0], [86, 0]];
let isn = 75;
function searchCount(arr, isn) {
return (new Map(arr)).get(isn);
}
console.log(searchCount(arrData, isn));
答案 1 :(得分:1)
您还可以转换为字典,如下所示:
var dataMap =
arrData.reduce(function(p, c) { p[c[0]] = c[1]; return p; }, {});
您可以使用dataMap进行搜索,方法是将项目作为dataMap的索引传递给搜索:
dataMap[75]