不要在地图中包含对象 JavaScript

Don't include an object in map JavaScript

使用 LoDash 映射对象:

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

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

这...如果 item 是数组,则只分配一个空对象,否则分配 item:

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

这里有一点 fiddle 没有新的匿名函数语法:https://jsfiddle.net/xurm6vrr/1/

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

您还可以使用其他函数来更改项目集,例如 filter 或某种 aggregatereduce

您可以使用 reduce,它非常适合您的情况:

var items = [{a: 1}, ["asd"], {b: 2}];

var result = _.reduce(items, (res, item) => {
    if (!Array.isArray(item)) {
        _.assign(res, item);
    }
  return res;
}, {foo: "bar"});

参见jsbin

另一种(IMO 更清洁)解决方案是使用链接:

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