我有一个如下的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 });
}
答案 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)
您可以通过标识来替换特定元素。