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