不要在地图中包含对象 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
或某种 aggregate
或 reduce
。
您可以使用 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()
使用 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
或某种 aggregate
或 reduce
。
您可以使用 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()