数组看起来像
products = [
{
"id": "5c94aa7b7a37631ce2a97a72",
"material": "5c9485d37804946bc487ce59",
},
{
"id": "5c94aa7b7a37631ce2a97a72",
"material": "5c94862a7804946bc487ce5e",
},
{
"id": "5c94aa7b7a37631ce2a97a72",
"material": "5c9486397804946bc487ce61",
},
{
"id": "5c94a0a87a37631ce2a979de",
"material": "5c9485d37804946bc487ce59",
},
{
"id": "5c94a0a87a37631ce2a979de",
"material": "5c94862a7804946bc487ce5e",
},
{
"id": "5c94a0a87a37631ce2a979de",
"material": "5c9486397804946bc487ce61",
}
]
当我尝试仅删除带有 id="5c94aa7b7a37631ce2a97a72"
和 material="5c9485d37804946bc487ce59"
我使用过滤功能
filtered = products.filter(x => x.id !== id && x.material !== material);
它会删除具有这些 ID 和 Material 的所有产品。在此函数中设置条件的正确方法是什么?
最佳答案
只需使用 ||
而不是 &&
,这样两个条件都必须为 false 才能进行过滤器
回调返回false
:
const products = [{
"id": "5c94aa7b7a37631ce2a97a72",
"material": "5c9485d37804946bc487ce59",
},
{
"id": "5c94aa7b7a37631ce2a97a72",
"material": "5c94862a7804946bc487ce5e",
},
{
"id": "5c94aa7b7a37631ce2a97a72",
"material": "5c9486397804946bc487ce61",
},
{
"id": "5c94a0a87a37631ce2a979de",
"material": "5c9485d37804946bc487ce59",
},
{
"id": "5c94a0a87a37631ce2a979de",
"material": "5c94862a7804946bc487ce5e",
},
{
"id": "5c94a0a87a37631ce2a979de",
"material": "5c9486397804946bc487ce61",
}
];
console.log(products.length);
const id = "5c94aa7b7a37631ce2a97a72";
const material = "5c9485d37804946bc487ce59";
const filtered = products.filter(x => x.id !== id || x.material !== material);
console.log(filtered.length);
console.log(filtered);
关于javascript - 使用多个条件过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55392650/