我有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数组中如果我想根据值
搜索项目ex如果我将Hello6作为查找字符串,我应该在列表中获得第3项。我希望通用搜索而不是搜索每个元素。
答案 0 :(得分:2)
你可以试试这个:
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
循环。
答案 1 :(得分:1)
以下是使用本机函数的示例:
var items = [/*your sample*/];
var myValue = "Hello6";
var result = items.filter(function (item) {
return Object.keys(item).some(function (property) {
return item[property] === myValue;
});
});
答案 2 :(得分:0)
你可以使用过滤功能:
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;
}
}
});
答案 3 :(得分:0)
您可以使用旧的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 }