[英]Update an object with map ( inline es6 )
我有这个代码,它的工作
series.map( el => {
if ( !el.label ) {
el.label = getTranslation(messages, 'label.unstranslated')
}
})
但如果我这样做就行不通了
series.map( el => {
const obj {...el,label: el.label ? el.label : getTranslation(messages, 'label.unstranslated')}
return obj
})
Obj 已更新但系列未更新
最后我想要这样的形式
series.map( el => ({...el,label: el.label ? el.label : getTranslation(messages,'label.unstranslated')})
但它没有用
.map()
返回新数组,因此您需要将其分配给series
:
var mappedSeries = series.map( el => ({...el,label: el.label || getTranslation(messages,'label.unstranslated')})
什么map
迭代一个数组,做一些事情,并返回一个包含你在回调中返回的项目的新数组。
在您的第一个示例中,您在迭代对象时对其进行了更改,并且由于这是一个引用,因此您的项目确实会被更改。 el
下面的行是对被迭代对象的引用。 对于这样的事情,您应该考虑使用forEach
而不是 map。
if ( !el.label ) {
el.label = getTranslation(messages, 'label.unstranslated')
}
在您的第二个示例中,您正在返回一个新对象,因为您应该使用map
函数正常工作,但是您没有将其分配给任何东西,并且项目不会被更改,因为现在您没有篡改el
,您只是像你应该的那样,将它的值读入一个新对象。 所以只需将结果分配给一个新变量来测试它。
var mapedSeries= series.map( el => {
const obj {...el,label: el.label ? el.label : getTranslation(messages, 'label.unstranslated')}
return obj;
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.