如何使用地图更新第一项时间?
const myArr = [{
day: 1,
time: [1200, 1400]
}]
newTime = 1300;
myNewArr = myArr.map(d => {
return {
day: d.day,
time: [newTime] // but this don't care about order
}
})
console.log(myNewArr)
这是1200,用1300说的替换它,但保留1400作为第二项?反之亦然,用另一个数字代替1400。
答案 0 :(得分:4)
您可以使用Object.assign
并使用想要的索引替换对象。
var myArr = [{ day: 1, time: [1200, 1400] }],
newTime = 1300,
myNewArr = myArr.map(
({ day, time }) => ({ day, time: Object.assign([], time, { 0: newTime }) })
);
console.log(myNewArr);

答案 1 :(得分:3)
考虑到您不想更新原始数组,可以使用带spread syntax
的切片来更新数据,如
const myArr = [{
day: 1,
time: [1200, 1400]
}]
newTime = 1300;
myNewArr = myArr.map(d => {
return {
day: d.day,
time: [newTime, ...d.time.slice(1)]
}
})
console.log(myNewArr)

请注意,映射数据和更新如上所述将更新整个对象列表。
您可以使用Object.assign
代替传播语法,因为@NinaScholz也建议,这样您就可以更新任何特定索引。它来自于数组接受整数索引
const myArr = [{
day: 1,
time: [1200, 1400]
}]
newTime = 1300;
myNewArr = myArr.map(d => {
return {
day: d.day,
time: Object.assign([], time, {1: newTime})
}
})
console.log(myNewArr)