根据条件从数组中删除特定项目,并以javascript返回其他项目

问题描述 投票:0回答:2

我下面有一个对象数组

selectedOption = [
    {
            id: 'REPORTORDER',
            name: 'reportOrder'
        },
    {
            id: 'REORDER',
            name: ‘reorder'
        },
    {
            id: 'RETURNPRODUCTS',
            name: 'returnProducts'
        },
     {
            id: 'ENTERPO',
            name: 'enterPo'
        }
]

基于shipmentStatus为“ CANCELLED”且entriesList为[]的条件,我想从上述数组中删除第二项。

我尝试使用如下所述的过滤器方法:

selectedOption.filter(item => (shipmentStatus == "CANCELLED" && entriesList == []) ? item.name != "reorder" : item.name)
javascript underscore.js
2个回答
1
投票
  1. filter返回一个新数组,因此您需要将selectedOption重新分配给filter的结果。
  2. 条件将始终失败,因为entrysList永远不会等于新的空数组。最好通过将长度与零进行比较来检查数组是否为空。
  3. 最好检查过滤器外部的全局条件。

if (shipmentStatus == 'CANCELLED' && entriesList.length == 0) { selectedOption = selectedOption.filter( (item) => item.name != 'reorder' ); }


0
投票
如果我对,您想基于

external条件对数组进行变异,在这种情况下,您必须像这样检查条件outside filter

let condition = true; let selectedOption = [{ id: 'REPORTORDER', name: 'reportOrder' }, { id: 'REORDER', name: 'reorder' }, { id: 'RETURNPRODUCTS', name: 'returnProducts' }, { id: 'ENTERPO', name: 'enterPo' } ]; if (condition) selectedOption = selectedOption.filter(item => item.name != 'reorder') console.log(selectedOption)
© www.soinside.com 2019 - 2024. All rights reserved.