使用下划线转换对象数组
Transform array of objects with Underscore
我正在尝试获取一组对象并挑选出我只需要的数据。例如,下面我只想要 originalArray
.
中的 name
、id
和 users
属性
我想出了如何在第一级迭代中做到这一点,但我如何对 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
方法来 return 列入白名单的值,但是我怎样才能更改 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);
对子数组应用另一个map/pick:
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;
});
}
与外部数组的原理相同,但每个子数组元素一次。这将为您提供所需的输出。
我正在尝试获取一组对象并挑选出我只需要的数据。例如,下面我只想要 originalArray
.
name
、id
和 users
属性
我想出了如何在第一级迭代中做到这一点,但我如何对 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
方法来 return 列入白名单的值,但是我怎样才能更改 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);
对子数组应用另一个map/pick:
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;
});
}
与外部数组的原理相同,但每个子数组元素一次。这将为您提供所需的输出。