如何使用Lodash筛选对象数组中status值为true的对象
问题根源
- 数组方法选择错误:
map方法会遍历数组所有元素,将每个元素的返回值组成新数组,长度和原数组完全一致。你当前代码返回的是每个元素的status判断结果,所以最终得到布尔值数组。 - 判断逻辑和示例不匹配:你给出的示例数组中
status为布尔类型,原有代码判断条件为item.status === "Delievered",和示例的筛选要求不符,同时该字符串存在拼写错误,正确的「已交付」英文拼写为Delivered。
修复方案
要筛选出符合条件的对象,应使用数组的filter方法,该方法仅会将判断返回true对应的原元素保留到新数组中。
适配示例需求的代码(筛选status为true的对象)
const inputArray = [ {id: 1, status: true}, {id: 2, status: true}, {id: 3, status: false}, {id: 4, status: true}, {id: 5, status: true}, {id: 6, status: false} ]; const getValidStatusItems = (array) => { const result = array.filter(function (item) { return item.status === true; }); console.log("@@ result", result); return result; }; // 调用后得到的result就是所有status为true的对象集合 getValidStatusItems(inputArray);
适配实际交付状态判断的代码
如果你的业务场景中status存储的是状态字符串,调整判断条件即可:
const countDeliveredDeliveries = (array) => { const result = array.filter(function (item) { return item.status === "Delivered"; }); console.log("@@ result", result); return result; };
内容的提问来源于stack exchange,提问作者Jonas
相关产品推荐
相关产品推荐

