Javascript 如何用一行代码过滤和修改对象数组?
我的数据库中有以下对象数组:Javascript 如何用一行代码过滤和修改对象数组?,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我的数据库中有以下对象数组: dataFromDB = [ { src: 'stringWithSource1', selected: true }, { src: 'stringWithSource2', selected: false }, { src: 'stringWithSource3', selected: true }, AND SO ON... ]; 当我从数据库中获取它时,我需要在客户端以状态存储,必须是一个字符串数组,只包
dataFromDB = [
{ src: 'stringWithSource1',
selected: true
},
{ src: 'stringWithSource2',
selected: false
},
{ src: 'stringWithSource3',
selected: true
},
AND SO ON...
];
当我从数据库中获取它时,我需要在客户端以状态存储,必须是一个字符串数组,只包含所选对象的src
属性:true
示例:
myState = [
'stringWithSource1',
'stringWithSource3',
AND SO ON...
]
问题
我分配此项的行如下所示(请参见下面的代码):
我试过了,但没有成功,因为我将未选中的src
保留为null
,而不是跳过它们
setProductDetails({
// ... other properties,
images: dataFromDB.images.map((item) => {
return item.selected ? item.src : null;
}
});
我如何在这样一行中实现这种行为?我知道我可以创建一个辅助变量并处理它。但我想在这种情况下,一个班轮。这可能吗?感觉我应该同时过滤和映射?您需要两个部分,因为过滤不映射值,而是映射原始项
您可以通过选择进行过滤,然后映射src
images: dataFromDB.images
.filter(({ selected }) => selected)
.map(({ src }) => src)
您需要两个部分,因为筛选不映射值,而是映射原始项
您可以通过选择进行过滤,然后映射src
images: dataFromDB.images
.filter(({ selected }) => selected)
.map(({ src }) => src)
“在一行中”-为什么?请尽可能详细地说明,让您或任何正在阅读代码的人立即了解此处发生的情况。因为我是在setState()
中执行此操作的。谢谢“在一行中”-为什么?请尽可能详细地说明,让您或任何正在阅读代码的人立即了解此处发生的情况。因为我是在setState()
中执行此操作的。谢谢