2016-12-19 7 views
1

Скажем, у меня есть массив объектов JSON, который выглядит, как показано ниже:Фильтр массива на основе динамического параметра

var codes = [{ 
      "code_id": "1", 
      "code_name": "code 1",   , 
      }, { 
      "code_id": "2", 
      "code_name": "code889", 

      }, 
     // ...() ...  
      ] 

Как можно отфильтровать коды массива на основе динамического входного параметра?

Итак, я ищу универсальную функцию, которая будет принимать входной массив и ключ и значение как i/p.

var filteredCodes = getFilteredCodes(codes, "code_id", 2); 

Спасибо.

ответ

3

Используйте Array.prototype.filter отфильтровать результат - увидеть демо ниже:

var codes = [{"code_id": "1","code_name": "code 1"}, {"code_id": "2","code_name": "code889"}]; 
 

 
function getFilteredCodes(array, key, value) { 
 
    return array.filter(function(e) { 
 
    return e[key] == value; 
 
    }); 
 
} 
 

 
var filteredCodes = getFilteredCodes(codes, "code_id", 2); 
 

 
console.log(filteredCodes);

2

Вы можете использовать Array#filter с ключом и значением.

function getFilteredCodes(array, key, value) { 
 
    return array.filter(function (o) { 
 
     return o[key] === value; 
 
    }); 
 
} 
 

 
var codes = [{ "code_id": "1", "code_name": "code 1", }, { "code_id": "2", "code_name": "code889" }], 
 
    filteredCodes = getFilteredCodes(codes, "code_id", "2"); 
 

 
console.log(filteredCodes);

2
function getFilteredCodes(poolArray,key,val){ 
    return poolArray.filter(function(item,ind){ 
     return item[key]==val; 
    }); 
} 
2

Или функция в единственной строке со стрелкой нотации

var codes = [{ "code_id": "1", "code_name": "code 1", }, { "code_id": "2", "code_name": "code889" }]; 
 
var getFilteredCodes = (array, key, value) => array.filter(x => x[key] === value); 
 
var FilteredCodes = getFilteredCodes(codes, "code_id", "2"); 
 
console.log(FilteredCodes);