当前位置:  开发笔记 > 编程语言 > 正文

尝试循环遍历数组,并添加其他键值对,最后只有最后一个值

如何解决《尝试循环遍历数组,并添加其他键值对,最后只有最后一个值》经验,为你挑选了1个好方法。

我正在尝试从我循环的现有数组创建一个新的对象数组,但我最终只得到最后一个值.我明白为什么会这样,只是不确定采取什么方法来获得理想的结果.

var existingThing = ["one","two","three"];

var thingtoAdd = {};

var newthing = [];

for (var i = 0; i < existingThing.length; i++) {

    thingtoAdd.key = existingThing[i];
    thingtoAdd.value = existingThing[i];
    thingtoAdd.selected = "true";
    newthing.push(thingtoAdd);
}

console.log(JSON.stringify(newthing));

我最终得到:

[{"key":"three","value":"three","selected":"true"},
{"key":"three","value":"three","selected":"true"},
{"key":"three","value":"three","selected":"true"}]

Shai Aharoni.. 7

将您的代码更改为:

var existingThing = ["one","two","three"];

var newthing = [];

for (var i = 0; i < existingThing.length; i++) {

    var thingtoAdd = {};

    thingtoAdd.key = existingThing[i];
    thingtoAdd.value = existingThing[i];
    thingtoAdd.selected = "true";
    newthing.push(thingtoAdd);
}

console.log(JSON.stringify(newthing));

您将继续覆盖相同的对象thingtoAdd,因为它存在于外部循环范围内.将它移动到循环的内部块时,可以在每次迭代时使用所需的值添加新对象.



1> Shai Aharoni..:

将您的代码更改为:

var existingThing = ["one","two","three"];

var newthing = [];

for (var i = 0; i < existingThing.length; i++) {

    var thingtoAdd = {};

    thingtoAdd.key = existingThing[i];
    thingtoAdd.value = existingThing[i];
    thingtoAdd.selected = "true";
    newthing.push(thingtoAdd);
}

console.log(JSON.stringify(newthing));

您将继续覆盖相同的对象thingtoAdd,因为它存在于外部循环范围内.将它移动到循环的内部块时,可以在每次迭代时使用所需的值添加新对象.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有