2016-08-19 59 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));