[英]Loop through an object of objects with arrays as values
所以我有一個這樣的對象:
{
"apples": [
"one",
"two"
],
"oranges": [
"three",
"four"
]
}
我如何看待這個對象,例如找到four
? 就像是:
for (var i=0; i < obj.length; i++) {
for (var y=0; y <obj.childObj.length; y++ {
obj.childObj[i] === 'four' ? return : null;
}
}
還是有更好的方法來構造這些數據?
for(var x in obj)
if(obj.hasOwnProperty(x)) {
for(var y in obj[x])
if(obj[x].hasOwnProperty(y)) {
obj[x][y] === 'four' ? doSomething() : doSomethingElse();
}
}
編輯:Matthew Herbst建議的改進
您可以for (x in y)
陳述式:
var data = {
"apples": [
"one",
"two"
],
"oranges": [
"three",
"four"
]
};
for (var key in data) {
var obj = data[key];
for (var i=0; i <obj.length; i++) {
// obj[i] === 'four' ? return : null;
console.log(obj[i]);
}
}
這將打印:
one
two
three
four
如果要查找此對象在某處是否有四個,則
var isFourAvailable = Object.keys(obj).filter(function(val){ return obj[val].indexOf("four") != -1 }).length > 0;
使它更通用
function findX(x)
{
return Object.keys(obj).filter(function(val){ return obj[val].indexOf(x) != -1 }).length > 0;
}
嘗試這個 ;)
修改了您的代碼;
for (var i = 0; i < obj.length; i++) {
for (var y = 0; y < obj[i].length; y++ {
if(obj[i][y] === 'four'){
console.log("It's four");
}
}
}
您可以使用indexOf
var x={
"apples": [
"one",
"two"
],
"oranges": [
"three",
"four"
]
}
for (var e in x) {
if (x[e].indexOf("four") > -1)
console.log("found Four");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.