有没有办法缩短长数组名称而不将其分配给新数组?

时间:2015-01-28 21:04:40

标签: javascript arrays json

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

我不想复制数组只是为了缩短名称。

4 个答案:

答案 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);
});