我写信是为了能否操作jquery数组。
所以我有一个对象:
myobject = {
abc : {
value : 'abc',
template : '<div class="abc"></div>',
},
},
现在我拥有的是另一个看起来像这样的数组:
myarray = ["abc", "cde"];
所以我要做的是循环myarray
以查看它是否与myobject
中的对象匹配。
现在我认为你可以通过这样做来实现这个目标:
for (var i = 0; i < myarray.length; i++) {
if (myobject.myarray[i]) {
// do something
}
}
现在这给了我一个错误:Uncaught TypeError: Cannot read property '0' of undefined
很明显,这不是方法,我如何遍历myarray
以查看myobject
是否有一个与myarray
数组中的名称匹配的对象?
答案 0 :(得分:2)
代码中的问题是myobject.myarray
不存在,因此非对象的0
不可用。尝试查看in:
for (var i = 0; i < myarray.length; i++) {
if (myarray[i] in myobject) {
// do something
}
}
答案 1 :(得分:1)
您可以将javascript对象视为字典。
myobject = {
abc: {
value: 'abc',
template: '<div class="abc"></div>',
},
},
myarray = ["abc", "cde"];
for (var i = 0; i < myarray.length; i++) {
console.log(myobject[myarray[i]]);
}
答案 2 :(得分:1)
您需要将对象引用从myobject.myarray[i]
更改为myobject[myarray[i]]
var myobject = {
'abc' : {
value : 'abc',
template : '<div class="abc"></div>',
}
};
var myarray = ["abc", "cde"];
for (var i = 0; i < myarray.length; i++) {
if (myobject[myarray[i]]!=undefined) {
console.log(myobject[myarray[i]]);
}
}
&#13;
答案 3 :(得分:1)
您应该可以执行以下操作。
for (var i = 0; i < myarray.length; i++) {
if (myobject.hasOwnProperty(myarray[i])) {
// do something
}
}
&#13;
答案 4 :(得分:0)
您在遍历数组以查找匹配时已结束,完成使用hasOwnProperty
检查数组中的当前位置是否与myobject
中的任何属性相匹配
var myobject = {
abc: {
"value": "abc",
"template": "test"
}
}
var myarray = [ "abc", "cde" ];
for (var i = 0; i < myarray.length; i++) {
var thisKey = myarray[i];
if (myobject.hasOwnProperty(thisKey)) {
//match found
}
}