json响应有一系列对象,我想迭代而不必使用完整的(我不知道你会调用什么" results.data.messages.items")名:
for (var i = 0; i < results.data.messages.items.length; i++) {
console.log( results.data.messages.items[i].id );
}
我知道如何迭代项目,但我找不到任何方法来缩短项目,因此我不必每次都输入results.data.messages.items[i].property_name
,而只能{{1} }}
我不想复制数组只是为了缩短名称。
答案 0 :(得分:3)
将数组分配给新变量不复制数组 - 它仍然引用同一个对象。新变量有点像&#34;别名&#34;。因此,这绝对没问题:
var element = results.data.messages.items[i];
或者,您可以在循环外声明一个新变量:
var items = results.data.messages.items;
答案 1 :(得分:2)
为什么不将它缩短为特定索引处的元素,而不是数组:
for (var i = 0; i < results.data.messages.items.length; i++) {
var item = results.data.messages.items[i];
console.log(item.id);
}
修改强>
为了使其更简单,您可以使用数组原型类型方法forEach
进行迭代,该方法已根据需要为每个元素分配任何名称:
results.data.messages.items.forEach(function(item) {
console.log(item.id);
});
答案 2 :(得分:2)
你总是可以在for循环的定义中定义它们
for (var i = 0, items = results.data.messages.items; i < items.length; i++) {
console.log( items[i].id );
}
通常也会避免with
with( results.data.messages ){
for (var i = 0; i < items.length; i++){
console.log( items[i].id );
}
}
答案 3 :(得分:1)
在循环之前将其分配给单独的变量:
var items = results.data.messages.items;
for (var i = 0; i < items.length; i++) {
console.log( items[i].id );
}
这不会创建新数组。只是一个引用相同数组的新变量。
另一种选择是使用数组的内置方法来减少重复:
results.data.messages.items.forEach(function (item) {
console.log(item.id);
});