首页 > 解决方案 > 在javascript中有条件地返回一个对象属性

问题描述

所以这可能看起来像一个奇怪的问题,但请耐心等待:

我有一个简单的字符串数组,我想将它映射到一个对象数组。很简单:我会写

arr.map (x => ({
   header  : x,
   sortType: 'basic'
}))

现在,问题来了:我想检查一下 x 是否有某个值,然后根本不包括 sortType。我想做类似的事情

 arr.map (x => ({
       header  : x,
       x==='test' ? (sortType: 'basic') : //don't provide anything
    }))

所以我希望我的最终数组是这样的: 而且我当然不想有两张地图!

[
{ header: 'Header One' , sortType: 'basic'},
{ header: 'test' },
{ header: 'Another one' , sortType: 'basic'},
]

标签: javascriptobjectarray-map

解决方案


您可以将两个对象与条件运算符一起使用。

arr.map(header => header === 'test'
    ? { header }
    : { header, sortType: 'basic' }
)

或采取Object.assign

arr.map(header => Object.assign({ header }, header !== 'test' && { sortType: 'basic' })) 

推荐阅读