如何修复Partition函数分割对象数组失效的问题?
修复对象数组的Partition函数分割问题
问题原因
你在处理对象数组时,过滤条件犯了一个简单错误:直接拿整个对象e和数字34比较,而非访问对象的marks属性。在JavaScript中,对象与数字比较时会被转换为字符串"[object Object]",这个字符串和34比较的结果永远是false,所以所有元素都被分到了第二个数组中,导致第一个数组为空。
修复后的代码
// Partition函数(无需修改) function partition(array, filter) { let pass = [], fail = []; array.forEach((e, idx, arr) => (filter(e, idx, arr) ? pass : fail).push(e)); return [pass, fail]; } // 使用对象数组和正确的过滤条件 const [below34, aboveOrEqual34] = partition([ { name: "Mike", marks: 40 }, { name: "Suzan", marks: 20 }, { name: "David", marks: 90 }, { name: "Peter", marks: 32 } ], e => e.marks < 34); // 改为访问对象的marks属性进行判断 // 输出结果 console.log(below34); console.log(aboveOrEqual34);
正确输出结果
[ { name: 'Suzan', marks: 20 }, { name: 'Peter', marks: 32 } ] [ { name: 'Mike', marks: 40 }, { name: 'David', marks: 90 } ]
内容的提问来源于stack exchange,提问作者brainReader
相关产品推荐
相关产品推荐

