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

如何在JavaScript中正确地将对象从for循环推送到数组?,javascript,arrays,Javascript,Arrays,我想制作一个数组,其中包含对象by for循环,但有一个问题,我想要的形状如下: [ { data: 'apple', label: 'Fruits' }, { data: 'banana', label: 'Fruits' }, { data: 'mango', label: 'Fruits' } ] 所以我试着沿着这条路走,但它不能正常工作 var arr = []; obj = {}; var fruits = ['banana', 'apple', 'mang

我想制作一个数组,其中包含对象by 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);

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

之所以发生这种情况,是因为
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);
}
同一对象
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);
}
for(var i=0;ivar obj={};//始终覆盖同一对象

你需要排队等候

obj = {};
用于创建空对象

var arr=[],
obj,
水果=[‘香蕉’、‘苹果’、‘芒果’],
标签='水果',
我
对于(i=0;iobj={};//您应该在循环中创建新对象
obj
,您总是引用同一个对象

var arr=[];
var水果=[‘香蕉’、‘苹果’、‘芒果’];
var标签=‘水果’;
对于(变量i=0;i
第一个
obj={}
没有用,不是吗?@isvforall,在哪里,什么?
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);
}