使用js替换JavaScript数组对象的值

时间:2019-08-05 04:39:11

标签: javascript arrays

我有一个如下的JavaScript数组

var array = [{"month": 1, "days": 31},{"month": 2, "days": 2},{"month": 3, "days": 21}]

我需要将第1个月的天值替换为以下内容

var array = [{"month": 1, "days": 12},{"month": 2, "days": 2},{"month": 3, "days": 21}]

我怎么能得到这个。我尝试了以下方法。但这不起作用

var val = array.indexOf(1);
for(var i=0; i <array .length; i++ )
{
if(val != -1)
array.month[val].push({month:1, days:12 }); 
}

5 个答案:

答案 0 :(得分:4)

您可以.map()排列数组,并在month: 1出现时更改映射对象:

var array = [{"month": 1, "days": 31},{"month": 2, "days": 2},{"month": 3, "days": 21}];

var new_array = array.map(({month, days}) => month === 1 ? {month, days: 12} : {month, days});
console.log(new_array);

或者,如果您希望在适当的位置更改数组,则可以使用.filter(),然后更改过滤对象的days属性,如下所示:

var array = [{"month": 1, "days": 31},{"month": 2, "days": 2},{"month": 3, "days": 21}];

array.filter(({month}) => month === 1).forEach(o => o.days = 12);
console.log(array);

答案 1 :(得分:1)

您也可以使用'of'关键字来实现这一点,但是您要更改的内容完全取决于您,这是一个小例子:

tail -1 /etc/rc.local
echo "Welcome to `hostname`" > /etc/issue

答案 2 :(得分:0)

首先,它可能只是一个示例,但请避免使用array,因为它与JavaScript对象Array过于接近。我将使用arr作为数组。

只需将第1个月中的天数更改为12:

arr[0].days = 12;

但是,如果您需要更改任何给定月份的天值的功能,请尝试使用以下功能:

  function changeDays(month, days) {
    for(var i = 0; i < arr.length; ++i){
      if(arr[i].month == month) arr[i].days = days;
    };
  };

  changeDays(1, 12); // changes 31 days to 12 days in month 1

Nick和TrickOrTreat的其他答案更为优雅,Parth的答案假定您需要搜索天数而不是月数。我的解决方案最接近您的示例,这对我来说更有意义,您希望按月进行搜索。但是,嘿,您比我们任何人都更了解您的要求!

答案 3 :(得分:0)

您可以使用forEach函数来完成此操作,

var array = [{"month": 1, "days": 31},{"month": 2, "days": 2},{"month": 3, "days": 21}]

array.forEach(e=>{

  if(e.month == 1)
    e.days = 12;
});

console.log(array);

答案 4 :(得分:-1)

var array = [{
  "month": 1,
  "days": 31
}, {
  "month": 2,
  "days": 2
}, {
  "month": 3,
  "days": 21
}];
for (var i = 0; i < array.length; i++) {
  if (array[i].days === 31) {
    array[i].days = 12
  }
}
console.log(array)

您可以通过标识来替换特定元素。