gpt4 book ai didi

javascript - 将数组数组传递到 lodash 交集

转载 作者:搜寻专家 更新时间:2023-11-01 04:53:35 26 4
gpt4 key购买 nike

我有一个包含对象的数组:

let data = [[{a:0}, {b:1}], [{a:1}, {b:1}]]

现在我想制作一个 lodash intersection这两个数组,返回 [{b:1}]

当我这样做时:

import {intersection} from 'lodash'

return intersection([{a:0}, {b:1}], [{a:1}, {b:1}])

结果正确。

但是当我这样做的时候

return intersection(data)

我只是得到相同的结果。

有没有一种简单的方法可以将所有数组从数据传递到交集函数?我最初的想法是使用 .map,但这会返回另一个数组...

最佳答案

你可以 spread数组。

intersection(...arrayOfarrays);

或者,在 ES6 之前的环境中,使用 apply :

intersection.apply(null, arrayOfArrays);

或者,您可以将 intersect 转换为具有扩展参数的函数:

const intersectionArrayOfArrays = _.spread(_.intersection);
intersectionArrayOfArrays(arrayOfArrays);

请注意 lodash 中的交叉点 doesn't automatically work on arrays of objects .

你可以使用 intersectionBy ,如果你想在属性 b 上相交:

const arrayOfArrays = [[{a:0}, {b:1}], [{a:1}, {b:1}]];
console.log(
_.intersectionBy(...arrayOfArrays, 'b')
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

intersectionWith ,如果你想通过引用或深度比较在相同的对象上相交:

const a1 = {a: 0};
const a2 = {a: 1};
const b = {b: 1};
const arrayOfArrays = [[a1, b], [a2, b]];

// reference comparison
console.log(
_.intersectionWith(...arrayOfArrays, (a, b) => a === b)
)

// deep equality comparison
console.log(
_.intersectionWith(...arrayOfArrays, _.isEqual)
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

关于javascript - 将数组数组传递到 lodash 交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44571115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com