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

관련 문제