我有一个简单的问题,但仍然没有找到解决这个问题的想法。
我有这个数组:
var charsAndTypes = [
{'type': 'Power', 'characters': ['Bunny','Buffalo']},
{'type': 'Magic', 'characters': ['Sheep','Dragon']},
{'type': 'Sense', 'characters': ['Fox','Lion']},
{'type': 'Charm', 'characters': ['Cat','Raccoon']}
];
我需要搜索“人物”,比如“兔子”,然后抓住“类型”将其保存到var,尝试.map(),。filter,foreach inArray,但stil不起作用我想要吗
基本上我最终需要这样的功能
function searchInArray ( array, string ){
//search in characters what array contains that string
//then return the array that has the value
}
var charType = searchInArray(charsAndTypes, "Bunny");
//then the output must be "Power" in this case
console.log(charType.type);
答案 0 :(得分:1)
只需循环遍历数组,并检查对象的数组是否具有值。
var charsAndTypes = [
{'type': 'Power', 'characters': ['Bunny','Buffalo']},
{'type': 'Magic', 'characters': ['Sheep','Dragon']},
{'type': 'Sense', 'characters': ['Fox','Lion']},
{'type': 'Charm', 'characters': ['Cat','Raccoon']}
];
function search (arr, char) {
for (var i = 0; i < arr.length; i++) {
if (arr[i].characters.indexOf(char) > -1) {
return arr[i].type;
}
}
}
console.log(search(charsAndTypes, 'Bunny'));
&#13;
答案 1 :(得分:0)
您可能需要的是find
。它的工作方式与filter
类似,但只返回数组中的一个值,而不是匹配数组。
function search(arr, char)
return arr.find(function(charAndType){
return ~charAndType.characters.indexOf(char);
});
}
这是ES6,可能还不是跨浏览器。然而,该页面中有一个polyfill。
答案 2 :(得分:0)
一个简单的for循环。如果它没有找到它将返回undefined。
var charsAndTypes = [
{'type': 'Power', 'characters': ['Bunny','Buffalo']},
{'type': 'Magic', 'characters': ['Sheep','Dragon']},
{'type': 'Sense', 'characters': ['Fox','Lion']},
{'type': 'Charm', 'characters': ['Cat','Raccoon']}
];
function searchInArray ( array, string ){
for(i=0;i<array.length;i++){
if(array[i].characters.indexOf(string)>=0)
return array[i];
}
}
var charType = searchInArray(charsAndTypes, "Bunny");
//then the output must be "Power" in this case
console.log(charType.type);
&#13;
答案 3 :(得分:0)
这个功能可以解决问题。
function searchInArray ( arr, string ){
var found = false;
$.each(arr, function(k,v) {
if (v.characters.indexOf(string) != -1) {
found = v;
return false;
}
});
return found;
}
答案 4 :(得分:0)
var charsAndTypes = [
{'type': 'Power', 'characters': ['Bunny','Buffalo']},
{'type': 'Magic', 'characters': ['Sheep','Dragon']},
{'type': 'Sense', 'characters': ['Fox','Lion']},
{'type': 'Charm', 'characters': ['Cat','Raccoon']}
];
var search = function (arr, char) {
for (var index = 0; index < arr.length; index++) {
if (arr[index].characters.indexOf(char) > -1) {
return arr[index];
}
}
}
var charType = searchInArray(charsAndTypes, "Bunny");
console.log(charType.type);