Javascript 使用下划线链将两个对象的特性值合并到一个数组中
我有以下资料:Javascript 使用下划线链将两个对象的特性值合并到一个数组中,javascript,underscore.js,Javascript,Underscore.js,我有以下资料: a = {x:1, y:3, w:4} b = {c:2, d:3} 我想得到这些对象的所有值,只迭代一次 result = [1, 3, 4, 2, 3] 我有以下解决方案,但它有多个迭代 result = _.chain(a).values().union(_.values(b)).value(); 我希望避免使用“u.values(b)”并使用来自a的相同链来执行此操作 我也尝试过这个,但它不能正常工作: result = _.chain({}).extend(a,b
a = {x:1, y:3, w:4}
b = {c:2, d:3}
我想得到这些对象的所有值,只迭代一次
result = [1, 3, 4, 2, 3]
我有以下解决方案,但它有多个迭代
result = _.chain(a).values().union(_.values(b)).value();
我希望避免使用“u.values(b)”并使用来自a的相同链来执行此操作
我也尝试过这个,但它不能正常工作:
result = _.chain({}).extend(a,b).values().value();
怎么样
var a = {x:1, y:3, w:4},
b = {c:2, d:3};
result = _.values(_.extend(a,b));
如果你想用链子拴住,那么
_.chain([a, b]) . // [ { x: 1, y: 3, w: 4 }, { c: 2, d: 3 } ]
map(_.values) . // [ [ 1, 3, 4 ], [ 2, 3 ] ]
flatten() . // [ 1, 3, 4, 2, 3 ]
uniq() . // [ 1, 3, 4, 2 ]
value()
我想你所拥有的是你能找到的最好的解决方案。你可以合并对象,然后从合并的对象中获取值。@torazaburo如果对象有共同的键,这将不起作用,right@luis不,不会,但您自己在上一个代码片段中也展示了类似的方法(这对我很有用…为什么您会说“它工作不正常”?)。当你在两个对象之间有公共密钥时,问题就来了。但是,我总是得到相同的结果。你在更改输入吗?@GusOrtiz如果两个对象都有相同的密钥呢?对,这就是问题所在。不过,我可以使我的密钥对于我的解决方案是唯一的。谢谢!有u.chain({})。extend(a,b)。values()与你的解决方案有什么不同吗?我认为第一链更快。我更新了小提琴,添加了第一链,并对它们进行了计时。它们通常在同一时间结束,但我们需要大量数据来制作更好的基准。我不知道下划线的内部结构,所以我不知道哪一个更快。这是更新的小提琴。