不要在地图JavaScript中包含对象

时间:2015-06-25 17:38:20

标签: javascript object lodash

使用LoDash映射对象:

_.map(items, (item) = > {
    if (Array.isArray(item)) {
        // don't include this in final object
    }
    return _.assign({
        foo: "bar"
    }, item);
});

想知道如果当前对象是数组,那么在返回的映射对象中不包含对象的最佳策略是什么?

4 个答案:

答案 0 :(得分:1)

You may use reduce which works perfectly for your case: var items = [{a: 1}, ["asd"], {b: 2}]; var result = _.reduce(items, (res, item) => { if (!Array.isArray(item)) { _.assign(res, item); } return res; }, {foo: "bar"}); See jsbin.

答案 1 :(得分:1)

另一个(和IMO清洁工)解决方案是使用链接:

results = _(items).reject(_.isArray).map(function(item) {
    ....
}).value()

答案 2 :(得分:0)

这......如果item是数组,只需指定一个空对象,否则指定item:

_.map(items, (item) = > {
    return _.assign({
        foo: "bar"
    }, Array.isArray(item)?{}:item);
});

如果没有新的匿名函数语法,这里有点小提琴:https://jsfiddle.net/xurm6vrr/1/

答案 3 :(得分:0)

我希望map函数始终输出与输入相同的键。可能会修改这些值,但键保持不变。

您可以使用其他功能来更改filter或某种aggregatereduce等项目。