如何在JavaScript中将对象从for循环正确地推送到数组?

俊太

我想通过for循环创建一个包含对象的数组,但是有一个问题,我想要的形状如下:

[ 
  { data: 'apple', label: 'Fruits'  },
  { data: 'banana', label: 'Fruits' },
  { data: 'mango', label: 'Fruits'  } 
]   

因此,我尝试采用以下方式,但无法正常工作。

var arr = [];
obj = {};
var fruits = ['banana', 'apple', 'mango'];
var label = 'Fruits';

for (var i=0; i<fruits.length; i++){
    obj['data'] = fruits[i];
    obj['label'] = label;
    arr.push(obj);
}

console.log(arr);

结果是同一对象被推送。

[
  { data: 'apple', label: 'Fruits' },
  { data: 'apple', label: 'Fruits' },
  { data: 'apple', label: 'Fruits' } 
]

这是因为功能更紧密吗?我怎样才能做好呢?

杜沙尔

之所以发生这种情况,是因为该obj对象引用了相同的对象,并且在每次迭代中都会对其进行更新。

obj循环内引用了同一对象

在循环内移动对象声明以在每次迭代中创建一个新对象。

for(var i = 0; i < fruits.length; i++) {
    var obj = {}; // <---- Move declaration inside loop

    obj['data'] = fruits[i];
    obj['label'] = label;
    arr.push(obj);
}

var arr = [];
var fruits = ['banana', 'apple', 'mango'];
var label = 'Fruits';

for(var i = 0; i < fruits.length; i++) {
    var obj = {};
    obj['data'] = fruits[i];
    obj['label'] = label;
    arr.push(obj);
}

console.log(arr);


避免这种情况的一种简单方法是使用Array#map从旧的数组创建新数组。

var arr = fruits.map(fruit => ({
    data: fruit,
    label: label
}));

var arr = [],
    fruits = ['banana', 'apple', 'mango'],
    label = 'Fruits';

var arr = fruits.map(fruit => ({
    data: fruit,
    label: label
}));
console.log(arr);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在php中将对象推送到数组?

来自分类Dev

如何在angularjs中将对象推送到数组中?

来自分类Dev

如何在angularjs中将对象推送到数组?

来自分类Dev

Javascript将对象推送到数组

来自分类Dev

如何在AngularJs中将JSON对象推送到数组

来自分类Dev

如何在 Java 中正确地将对象插入到列表中?

来自分类Dev

如何在 Java 中正确地将对象插入到列表中?

来自分类Dev

在MongoDB Node.js中将对象推送到数组

来自分类Dev

如何在JavaScript中将对象附加到数组?

来自分类Dev

如何在Javascript中将对象转换为数组

来自分类Dev

如何在jquery / javascript中将对象转换为数组

来自分类Dev

如何在Javascript中将对象转换为数组

来自分类Dev

使用 jQuery(或 Javascript)将对象列表推送到数组中

来自分类Dev

如何使用Ruby将对象推送到数组x次?

来自分类Dev

使用foreach将对象推送到数组

来自分类Dev

将对象推送到数组反应本机

来自分类Dev

将对象推送到数组的开头

来自分类Dev

将对象推送到 JSON 数组中

来自分类Dev

Angular 4 -> 将对象推送到数组

来自分类Dev

如何在Javascript中将值从一维数组推送到二维数组?

来自分类Dev

如何在Laravel中将对象发送到视图?

来自分类Dev

如何在JavaScript中将对象数组转换为数组对象?

来自分类Dev

Javascript:将数据推送到for循环内的数组对象

来自分类Dev

如何正确地将对象(带有集合)绑定到Spring Forms?

来自分类Dev

如何正确地将对象上传到AWS S3?

来自分类Dev

如何在JavaScript中将对象数组转换为一个对象?

来自分类Dev

如何在Lodash中将对象数组转换为对象?

来自分类Dev

如何在AngularJs中将对象转换为对象数组?

来自分类Dev

如何正确地迭代JSON对象?

Related 相关文章

  1. 1

    如何在php中将对象推送到数组?

  2. 2

    如何在angularjs中将对象推送到数组中?

  3. 3

    如何在angularjs中将对象推送到数组?

  4. 4

    Javascript将对象推送到数组

  5. 5

    如何在AngularJs中将JSON对象推送到数组

  6. 6

    如何在 Java 中正确地将对象插入到列表中?

  7. 7

    如何在 Java 中正确地将对象插入到列表中?

  8. 8

    在MongoDB Node.js中将对象推送到数组

  9. 9

    如何在JavaScript中将对象附加到数组?

  10. 10

    如何在Javascript中将对象转换为数组

  11. 11

    如何在jquery / javascript中将对象转换为数组

  12. 12

    如何在Javascript中将对象转换为数组

  13. 13

    使用 jQuery(或 Javascript)将对象列表推送到数组中

  14. 14

    如何使用Ruby将对象推送到数组x次?

  15. 15

    使用foreach将对象推送到数组

  16. 16

    将对象推送到数组反应本机

  17. 17

    将对象推送到数组的开头

  18. 18

    将对象推送到 JSON 数组中

  19. 19

    Angular 4 -> 将对象推送到数组

  20. 20

    如何在Javascript中将值从一维数组推送到二维数组?

  21. 21

    如何在Laravel中将对象发送到视图?

  22. 22

    如何在JavaScript中将对象数组转换为数组对象?

  23. 23

    Javascript:将数据推送到for循环内的数组对象

  24. 24

    如何正确地将对象(带有集合)绑定到Spring Forms?

  25. 25

    如何正确地将对象上传到AWS S3?

  26. 26

    如何在JavaScript中将对象数组转换为一个对象?

  27. 27

    如何在Lodash中将对象数组转换为对象?

  28. 28

    如何在AngularJs中将对象转换为对象数组?

  29. 29

    如何正确地迭代JSON对象?

热门标签

归档