我有一个对象数组,其中一些是
的例子[
{
"lang_code": "eng",
"site_language": "1",
"name": "English"
},
{
"lang_code": "afr",
"site_language": "1",
"name": "Afrikaans"
},
{
"lang_code": "ale",
"site_language": "0",
"name": "Aleut"
},
]
我希望能够在整个数组中搜索特定的lang_code
,让我们说我使用eng
。我想在整个数组中搜索eng
。如果它在那里,我希望它返回English
,如果没有,我希望它返回invalid
。关于这个的任何想法?
答案 0 :(得分:2)
您可以使用filter
:
function findLang(arr, code) {
var filtered = arr.filter(function (el) {
return el.lang_code === code;
});
// filter returns an array of objects that match the criteria
// if the array is not empty return the language,
// otherwise return 'invalid'
return filtered.length > 0 ? filtered[0].name : 'invalid';
}
findLang(arr, 'eng'); // English
如果您想将map
添加到混合中而不是使用该三元操作(但这很可能会更慢,并且不会提供任何额外的好处):
function findLang(arr, code) {
return arr.filter(function (el) {
return el.lang_code === code;
}).map(function (el) {
return el.name;
})[0] || 'invalid';
}
答案 1 :(得分:2)
上面的findById函数的通用且更灵活的版本:
// array = [{key:value},{key:value}]
function objectFindByKey(array, key, value) {
for (var i = 0; i < array.length; i++) {
if (array[i][key] === value) {
return array[i];
}
}
return null;
}
var array = your array;
var result_obj = objectFindByKey(array, 'lang_code', 'eng');
答案 2 :(得分:1)
for
循环怎么样?类似的东西:
function find_lang(input_arr, lang_code) {
for(var i = 0; i < input_arr.length; i++) {
var o = input_arr[i];
if( o.lang_code === lang_code ) {
return o.name;
}
}
return "invalid";
}
答案 3 :(得分:1)
Underscore.js有一些有用的助手:http://underscorejs.org/
E.g查找:
查看列表中的每个值,返回第一个值 传递真值测试(谓词),或者如果没有值传递则未定义 测试。一旦找到可接受的元素,函数就会返回, 并且不会遍历整个列表。
var even = _.find([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
=> 2
其中:
查看列表中的每个值,返回所有的数组 包含属性中列出的所有键值对的值。
_.where(listOfPlays, {author: "Shakespeare", year: 1611});
=> [{title: "Cymbeline", author: "Shakespeare", year: 1611},
{title: "The Tempest", author: "Shakespeare", year: 1611}]
答案 4 :(得分:0)
你可以这样做:
// configure your parameters
function checkArr(){
for (var i = 0; i < x.length; i++){
if (x[i].lang_code == "eng")
return "English";
}
return "invalid";
}
var x = [
{
"lang_code": "eng",
"site_language": "1",
"name": "English"
},
{
"lang_code": "afr",
"site_language": "1",
"name": "Afrikaans"
},
{
"lang_code": "ale",
"site_language": "0",
"name": "Aleut"
}
];