根据条件和 javascript 中的 return 其他项目从数组中删除特定项目
Remove a particular item from array based on condition and return other items in javascript
我有一个包含以下对象的数组
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)
如果我没看错你想根据外部条件改变数组,在这种情况下,你必须检查条件外面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)
filter
returns 一个新数组,因此您需要将 selectedOption
重新分配给 filter
的结果。
条件总是会失败,因为 entriesList 永远不会等于一个新的空数组。最好通过将长度与零进行比较来检查数组是否为空。
最好检查过滤器外的全局条件。
if (shipmentStatus === 'CANCELLED' && Array.isArray(entriesList) && entriesList.length === 0) {
selectedOption = selectedOption.filter(
(item) => item.name != 'reorder'
);
}
const selectedOption = [
{
id: 'REPORTORDER',
name: 'reportOrder',
},
{
id: 'REORDER',
name: 'reorder',
},
{
id: 'RETURNPRODUCTS',
name: 'returnProducts',
},
{
id: 'ENTERPO',
name: 'enterPo',
}];
const shipmentStatus = 'cancelled';
const entriesList = [];
console.log(selectedOption.filter((x) => (x.name !== 'reorder') || !(shipmentStatus === 'cancelled' && !entriesList.length)));
我有一个包含以下对象的数组
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)
如果我没看错你想根据外部条件改变数组,在这种情况下,你必须检查条件外面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)
filter
returns 一个新数组,因此您需要将selectedOption
重新分配给filter
的结果。条件总是会失败,因为 entriesList 永远不会等于一个新的空数组。最好通过将长度与零进行比较来检查数组是否为空。
最好检查过滤器外的全局条件。
if (shipmentStatus === 'CANCELLED' && Array.isArray(entriesList) && entriesList.length === 0) {
selectedOption = selectedOption.filter(
(item) => item.name != 'reorder'
);
}
const selectedOption = [
{
id: 'REPORTORDER',
name: 'reportOrder',
},
{
id: 'REORDER',
name: 'reorder',
},
{
id: 'RETURNPRODUCTS',
name: 'returnProducts',
},
{
id: 'ENTERPO',
name: 'enterPo',
}];
const shipmentStatus = 'cancelled';
const entriesList = [];
console.log(selectedOption.filter((x) => (x.name !== 'reorder') || !(shipmentStatus === 'cancelled' && !entriesList.length)));