[英]JSON - Javascript - How to search array item by searching list of values
我有json数组如下
[
{
French: 'Hello',
Spanish: 'Hello1',
english:'Hello2'
},{
French: 'Hello3',
Spanish: 'Hello4',
english:'Hello5'
},{
French: 'Hello6',
Spanish: 'Hello7',
english:'Hello8'
},{
French: 'Hello9',
Spanish: 'Hello10',
english:'Hello81'
}
];
在Javascript数组中如果我想根据值搜索项目
如果我给Hello6作为查找字符串,我应该在列表中获得第三项。 我想要通用搜索,而不是搜索每个元素。
您可以尝试以下方法:
function findIndex(arr, str) {
for (var i = 0; i < arr.length; i++) {
for (var key in arr[i]) {
if (arr[i][key] === str) {
if (arr[i].hasOwnProperty(key) {
return arr[i];
}
}
}
}
return null;
}
该方法由一个带有普通for
循环的数组搜索组成,然后,对于该数组的每个元素,我们执行一个for..in
循环。
这是使用本机函数的示例:
var items = [/*your sample*/];
var myValue = "Hello6";
var result = items.filter(function (item) {
return Object.keys(item).some(function (property) {
return item[property] === myValue;
});
});
您可以使用过滤器功能:
var val = "Hello6";
//if you want to filter the array
resultArray = jsonArray.filter(function(obj, index){
for(var key in obj){
if(obj[key]==val) return obj;
}
});
var indexes=[];
//if you want to find the results
jsonArray.forEach(function(obj, index){
for(var key in obj){
if(obj[key]==val){
indexes.push(index);
break;
}
}
});
您可以使用好旧的for
循环:
function find(array, fn) {
for (var i = 0, l = array.length; i < l; i++) {
if (fn(array[i]) === true) return array[i];
}
}
用法示例:
var a = [{ a: 1 }, { a: 2 }, { a: 3 }];
var result = find(a, function (item) {
return item.a === 2;
});
result; // { a: 2 }
使用更复杂的数组:
var a = [
{ a: 1, b: 2 },
{ a: 3, b: 4 },
{ a: 5, b: 6 }
];
var result = find(a, function (item) {
for (var k in item) {
if (item[k] === 4) return true;
}
});
result; // { a: 3, b: 4 }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.