我试图获取一组对象并挑选出我只需要的数据。例如,下面我只想要name
中的id
,users
和originalArray
属性。
我想出了如何在第一级迭代中执行此操作,但如何对users
对象数组执行相同操作?我只想在下面找到的allowedUserProps
数组中包含这些值。
https://jsfiddle.net/n8zw47cd/
原始数组
var originalArr = [
{
name: 'Obj 1',
id: 0,
something: 'else',
users: [{first_name: 'Joe', last_name: 'Smith'}]
},
{
name: 'Obj 2',
id: 1,
something: 'else',
users: [{first_name: 'Jane', last_name: 'Doe'}]
},
];
所需输出
[
{
name: 'Obj 1',
id: 0,
users: [{first_name: 'Joe'}]
},
{
name: 'Obj 2',
id: 1,
users: [{first_name: 'Jane'}]
},
];
我使用Underscore的pick
方法返回列入白名单的值,但如何更改users
对象数组呢?
function changeArray(arr) {
var allowedProps = ['name', 'id', 'users'];
var allowedUserProps = ['first_name'];
return _.map(arr, function(item) {
return _.pick(item, allowedProps);
});
}
var transformed = changeArray(originalArr);
答案 0 :(得分:2)
将另一个地图/选择应用于子数组:
function changeArray(arr) {
var allowedProps = ['name', 'id', 'users'];
var allowedUserProps = ['first_name'];
return _.map(arr, function(item) {
var out = _.pick(item, allowedProps);
out.users = _.map(out.users, function(usersItem) {
return _.pick(usersItem, allowedUserProps);
});
return out;
});
}
与外部数组相同的原理,但每个子数组元素一次。这将为您提供所需的输出。