forEach不改变数组的值


availableButtons.forEach(function(part, index) {
console.log(this[index].title)
// this[index].title = intl.formatMessage(this[index].title);
}, availableButtons)

上面的代码打印控制台如下所示:

{id: "abc.btn.xyz", defaultMessage: "someMessage"}

这确认了每个对象都有一个id,但是当我试图执行注释代码时,它抛出了一个错误,说[@formatjs/intl] An id must be provided to format a message.

我使用了相同的数组,但只有一个单独的对象,如下intl.formatMessage(availableButtons[0].title);,这给了我所需的结果,我只是无法弄清楚。我尝试了在forEach传递值的各种方法,我错过了什么?

forEach实际上并不改变数组。它只是在数组上调用一个简短的循环。因为你的意图不明确,所以很难提出解决方案。

availableButtons = availableButtons.map(button => {
//do your mutations here
}

可以是起始

我认为Array#map在这种情况下效果更好

availableButtons.map(part => {
return {
...part,
title: intl.formatMessage(part.title)
};
});

直接访问数组(availableButtons)并使用forEach更新(修改)。

availableButtons.forEach(function (part, index) {
console.log("before: ", availableButtons[index].title);
availableButtons[index].title = intl.formatMessage(this[index].title);
console.log("after: ", availableButtons[index].title);
});

相关内容

  • 没有找到相关文章

最新更新