如何简化代码?

时间:2016-08-19 08:33:41

标签: javascript

有没有更好的方法来查找值?

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));

2 个答案:

答案 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 对象是一个简单的键/值映射。任何值(对象和原始值)都可以用作键或值。

Map#get

结合使用
  

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]