Javascript 更改数组中对象的值

Javascript 更改数组中对象的值,javascript,arrays,object,underscore.js,Javascript,Arrays,Object,Underscore.js,这是我的数组 Array1 = [{year: "2013", fruit: "banana", quantity: 1},{year: "2014", fruit: "orange", quantity: 1},{year: "2014", fruit: "banana", quantity: 2}] 以及我复制阵列1的功能: var Array2 = Array1; for (var i = 0, len = Array1.length; i < len; i++) { A

这是我的数组

Array1 = [{year: "2013", fruit: "banana", quantity: 1},{year: "2014", fruit: "orange", quantity: 1},{year: "2014", fruit: "banana", quantity: 2}]
以及我复制阵列1的功能:

var Array2 = Array1; 
for (var i = 0, len = Array1.length; i < len; i++) {
    Array2[i] = Array1[i];
}
使用,但请确保返回新对象:

var Array2 = Array1.map(function (el) {
  return { fruit: el.fruit, year: 'AllYear', quantity: el.quantity }
});
//js

 var Array2 = Array1 
  for (var i = 0, len = Array1.length; i < len; i++) {
    Array2[i].year = "AllYear";
}
var Array2=Array1
对于(变量i=0,len=Array1.length;i
请参阅此解决方案:

我希望这会有帮助

你可以这样做

Array2 = Array1.slice(0); //copy array1 elements to array2
Array2 = Array2.map(function (el) {
var copy = {};
 for (var attr in el) {
        if (el.hasOwnProperty(attr)) copy[attr] = el[attr];
    }
  copy.year = 'AllYear';
  return copy ;
});

这将更改两个数组。这将修改原始数组,因为
Array2
Array1
都指向完全相同的数组。是的,我知道我刚刚给出了一个想法。因为每件物品都要用景泰蓝。让我修改一下答案:)我犯了同样的错误。你的答案比我的好。。true:)虽然这段代码可以回答这个问题,但最好包含一些上下文,解释它是如何工作的,并描述何时使用它。从长远来看,只使用代码的答案是没有用的。
Array2 = Array1.slice(0); //copy array1 elements to array2
Array2 = Array2.map(function (el) {
var copy = {};
 for (var attr in el) {
        if (el.hasOwnProperty(attr)) copy[attr] = el[attr];
    }
  copy.year = 'AllYear';
  return copy ;
});
var Array2 = Array1;
$.each(Array2,function(index,value) {
  value.year = "AllYear";
});//returns what you excepted