gpt4 book ai didi

javascript - 获得两个对象的键的交集的最佳方法?

转载 作者:行者123 更新时间:2023-12-03 00:17:45 26 4
gpt4 key购买 nike

我有两个对象文字,如下所示:

var firstObject =
{
x: 0,
y: 1,
z: 2,

a: 10,
b: 20,
e: 30
}

var secondObject =
{
x: 0,
y: 1,
z: 2,

a: 10,
c: 20,
d: 30
}

我想获得这两个对象文字的键的交集,如下所示:

var intersectionKeys  = ['x', 'y', 'z', 'a']

我显然可以做一个循环,看看另一个对象中是否存在同名的键,但我想知道这是否适合某些函数式编程和映射/过滤/减少使用?我自己没有做过那么多函数式编程,但我有一种感觉,这个问题可能存在一个干净而聪明的解决方案。

最佳答案

没有 indexOf 的解决方案。

var firstObject = { x: 0, y: 1, z: 2, a: 10, b: 20, e: 30 },
secondObject = { x: 0, y: 1, z: 2, a: 10, c: 20, d: 30 };

function intersection(o1, o2) {
return Object.keys(o1).concat(Object.keys(o2)).sort().reduce(function (r, a, i, aa) {
if (i && aa[i - 1] === a) {
r.push(a);
}
return r;
}, []);
}

document.write('<pre>' + JSON.stringify(intersection(firstObject, secondObject), 0, 4) + '</pre>');

第二次尝试,时间复杂度为 O(n)。

var firstObject = { x: 0, y: 1, z: 2, a: 10, b: 20, e: 30 },
secondObject = { x: 0, y: 1, z: 2, a: 10, c: 20, d: 30 };

function intersection(o1, o2) {
return Object.keys(o1).filter({}.hasOwnProperty.bind(o2));
}

document.write('<pre>' + JSON.stringify(intersection(firstObject, secondObject), 0, 4) + '</pre>');

关于javascript - 获得两个对象的键的交集的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34392741/

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