如何遍历数组并使用该值来尝试查找对象名称

时间:2015-07-20 16:48:37

标签: javascript jquery

我写信是为了能否操作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数组中的名称匹配的对象?

5 个答案:

答案 0 :(得分:2)

代码中的问题是myobject.myarray不存在,因此非对象的0不可用。尝试查看in

for (var i = 0; i < myarray.length; i++) {
   if (myarray[i] in myobject) {
      // do something
   }
}

答案 1 :(得分:1)

您可以将javascript对象视为字典。

Documentation

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]]

&#13;
&#13;
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;
&#13;
&#13;

答案 3 :(得分:1)

您应该可以执行以下操作。

&#13;
&#13;
for (var i = 0; i < myarray.length; i++) {
   if (myobject.hasOwnProperty(myarray[i])) {
      // do something
   }
}
&#13;
&#13;
&#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
    }
}

http://jsfiddle.net/jessikwa/obpacbao/3/