修改数组对象的值

change the value of objects of the array

本文关键字:对象 数组 修改      更新时间:2023-09-26

这是我的数组

Array1 = [{year: "2013", fruit: "banana", quantity: 1},{year: "2014", fruit: "orange", quantity: 1},{year: "2014", fruit: "banana", quantity: 2}]

和复制Array1的函数:

var Array2 = Array1; 
for (var i = 0, len = Array1.length; i < len; i++) {
    Array2[i] = Array1[i];
}

但是我想在Array2中改变所有的值我的键"year"并把值"AllYear":

Array2 = [{year: "AllYear", fruit: "banana", quantity: 1},{year: "AllYear", fruit: "orange", quantity: 1},{year: "2014", fruit: "banana", quantity: 2}]

使用map,但要确保返回一个新对象:

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

参考这个解决方案:Jsfiddle

你可以这样做

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