使用下划线链将2个对象的属性值合并到数组中

时间:2015-03-06 05:40:36

标签: 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();

我想避免使用“_.values(b)”并使用相同的链来执行此操作。

我也尝试了这个,但它无法正常工作:

result = _.chain({}).extend(a,b).values().value();

2 个答案:

答案 0 :(得分:1)

如果您打算进行链接,那么

_.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()

答案 1 :(得分:0)

怎么样。

var a = {x:1, y:3, w:4},
    b = {c:2, d:3};

result = _.values(_.extend(a,b));