繁体   English   中英

使用地图更新对象(内联 es6)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM