Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用下划线链将两个对象的特性值合并到一个数组中_Javascript_Underscore.js - Fatal编程技术网

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()与你的解决方案有什么不同吗?我认为第一链更快。我更新了小提琴,添加了第一链,并对它们进行了计时。它们通常在同一时间结束,但我们需要大量数据来制作更好的基准。我不知道下划线的内部结构,所以我不知道哪一个更快。这是更新的小提琴。