我正在构建一个以字符串为键的JavaScript数组。
该数组在每个条目处都应有一个对象。我的对象看起来像这样(console.log
我的变量rIds
):
现在,该对象的长度为0,这使得无法对其进行迭代。
我想遍历每个键,因此可以检索和访问我的ID列表(rIds[key].productIds
)。
代码:
var rIds = [];
var response = RR.data.JSON.placements;
console.log(response);
$(response).each(function (placementId) {
var placement_name = this.placement_name;
rIds[this.placement_name] = {
productIds: []
};
$(this.recs).each(function (recIndex) {
var pid = this.pid;
pid = getRandomId(19341610, 19341746);
rIds[placement_name].productIds[recIndex] = pid;
});
});
var count = '<%=ViewBag.Get("RecommendationCount") %>';
console.log(rIds);
console.log(rIds.length);
$.each(rIds, function (index, val) {
console.log(val); // This should work as expected.
});
我尝试了什么?
我发现以下代码段在IE8中不起作用。但是,即使Object.keys(rIds).length
得到正确的长度,这也无济于事。
for (var index = 0; index < Object.keys(rIds).length; index++) {
console.log(rIds[index]);
}
但是,此代码不会使我访问该对象。
TL;问题
该Object.keys()
函数返回一个包含对象属性名称的数组。
var keys = Object.keys(rIds);
for (var i = 0; i < keys.length; ++i) {
console.log(rids[keys[i]]); // object value
}
或者,您可以使用以下.forEach()
方法:
Object.keys(rIds).forEach(function(key) {
console.log(this[key]);
}, rIds);
最后是古老的for ... in
循环:
for (var key in rIds) {
if (rIds.hasOwnProperty(key))
console.log(rIds[key]);
为了IE9之前的IE版本,支持你是那种-的套牢for ... in
,但你可以找到大部分是纠正“polyfills”为Object.keys()
和Array.prototype.forEach()
在MDN。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句