Javascript 通过迭代了解lodash差异:大于x的不同数组值
我想为lodash differenceBy编写我自己的迭代器,它给我的数组值大于5 根据文件。iteratee用于“生成比较它们的标准” 根据文档的示例:Javascript 通过迭代了解lodash差异:大于x的不同数组值,javascript,arrays,lodash,Javascript,Arrays,Lodash,我想为lodash differenceBy编写我自己的迭代器,它给我的数组值大于5 根据文件。iteratee用于“生成比较它们的标准” 根据文档的示例: _.differenceBy([1, 2, 3, 5, 6], [1, 2, 3, 8, 10], Math.floor); // [5, 6] 这与使用Math.floor()类似 但是当我尝试这个的时候 let iter_greater = (value) => { return value > 5; }; le
_.differenceBy([1, 2, 3, 5, 6], [1, 2, 3, 8, 10], Math.floor); // [5, 6]
这与使用Math.floor()类似
但是当我尝试这个的时候
let iter_greater = (value) => {
return value > 5;
};
let differenceBy = _.differenceBy([1, 2, 3, 5, 6], [1, 2, 3, 8, 10], iter_greater);
console.log(differenceBy); // []
我得到一个空数组。我希望获得大于5的不同数组值
lodash differenceBy的源代码如下:
你能给我一个例子,如何为这个案例编写一个迭代器吗
谢谢。用这个
let iter_floor = (value) => {
return value > 5 && Math.floor(value);
};
let differenceBy = _.differenceBy([1, 2, 3, 5, 6,7,8,9], [1, 2, 3, 8, 10], iter_floor);
console.log(differenceBy); // [6, 7, 9]
differenceBy
将通过该函数运行每个值,然后如果返回值是唯一的,将保留它。您的iter\u greater
只返回true或false,两者都不会只出现一次,因此它(应该)返回一个空数组
您可以这样做,这在大多数情况下都有效:
让iter\u更大=(值)=>{
返回值>5?值:未定义;
};
设差分比=u.差分比([1,2,3,5,6],[1,2,3,8,10],iter\u更大);
console.log(differenceBy);//[]
通过使用带比较的函数,可以创建两个具有布尔值的数组
这个
工作分两步进行:
我还不清楚你想要的结果是什么。你能明确地列出它吗?我猜您只想
[6]
?是的,在示例中,结果应该是[6]关于lodash差异的出色解释
let iter_floor = (value) => {
return value > 5 && Math.floor(value);
};
let differenceBy = _.differenceBy([1, 2, 3, 5, 6,7,8,9], [1, 2, 3, 8, 10], iter_floor);
console.log(differenceBy); // [6, 7, 9]
_.differenceBy([1, 2, 3, 5, 6], [1, 2, 3, 8, 10], iter_greater);
[1, 2, 3, 5, 6] -> [false, false, false, false, true]
[1, 2, 3, 8, 10] -> [false, false, false, true, true]
[false, false, false, false, true] first array
[false, false, false, true, true] second array
false exists in 2nd array
false exists in 2nd array
false exists in 2nd array
false exists in 2nd array
true exists in 2nd array
[ ] // no values, 2nd array contains true and false