2016-08-19 80 views
2

有没有更好的方法来找到价值?如何简化代码?

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

回答

1

你也可以转换成字典如下:

var dataMap = 
    arrData.reduce(function(p, c) { p[c[0]] = c[1]; return p; }, {}); 

你可以使用数据地图通过将项目以搜索为指标,数据地图搜索:

dataMap[75] 
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));