gpt4 book ai didi

javascript - underscore.js:_.pick 以提取数组中对象内的属性

转载 作者:行者123 更新时间:2023-11-30 15:47:17 27 4
gpt4 key购买 nike

下面是我拥有的对象:

{
"email": "joe@example.com",
"id": null,
"firstName": null,
"lastName": null,
"createdAt": "2016-10-05T18:16:07.000Z",
"updatedAt": "2016-10-05T18:16:07.000Z",
"Details": [
{
"id": 1,
"token": null,
"deviceId": null,
"code": 12345678,
"verified": null,
"createdAt": "2016-10-05T18:16:07.000Z",
"updatedAt": "2016-10-05T18:16:07.000Z",
"UserEmail": "joe@example.com"
}
]
}

我希望使用 pick 库中的 underscore.js 方法并返回以下对象:

{
"email": "joe@example.com",
"firstName": null,
"lastName": null,
"Details": [
{
"token": null,
"deviceId": null,
"code": 12345678,
"verified": null,
}
]
}

我试过使用:

var modifiedObj = _.pick(obj, 'email', 'firstName', 'lastName');

返回:

{
"email": "joe@example.com",
"firstName": null,
"lastName": null
}

如何提取 Details 对象以及其中的部分 properties

最佳答案

与其在多个层面上挑选,不如直接做

var obj = {
"email": "joe@example.com",
"id": null,
"firstName": null,
"lastName": null,
"createdAt": "2016-10-05T18:16:07.000Z",
"updatedAt": "2016-10-05T18:16:07.000Z",
"Details": [
{
"id": 1,
"token": null,
"deviceId": null,
"code": 12345678,
"verified": null,
"createdAt": "2016-10-05T18:16:07.000Z",
"updatedAt": "2016-10-05T18:16:07.000Z",
"UserEmail": "joe@example.com"
}
]
};

var newObj = (({email, firstName, lastName, Details}) =>
({
email,
firstName,
lastName,
Details: Details.map(
({token, deviceId, code, verified}) => ({token, deviceId, code, verified}))
})
)(obj);

console.log(newObj);

在这个模式中,我们通过编写一个传递对象的函数来使用 ES6 参数解构“挑选”,并从参数列表中的对象中提取我们想要的属性,使用 ({p1, p2}) => 语法。然后,对于函数的返回值,我们指定一个只包含这些属性的新对象,使用对象字面量速记,这允许我们只写 {p1, p2} 来获得等价于 { p1: p1, p2: p2}。所以最简单的情况是,选择属性 p1p1

(({p1, p2}) => ({p2, p2}))(obj)

在上面的示例中,我们在顶层使用了一次此模式,然后再次通过 mapDetails 数组的每个元素中进行挑选。

当然,如果你真的想,或者认为上面的内容太困惑,你总是可以选择“手动”:

var newObj = {
email: obj.email,
...,
Details: obj.Details.map(function(detail) {
return {token: detail.token, ...};
})
};

使用_.pick

如果你还想使用_.pick,那么你需要做两次:

var newObj = _.pick(obj, 'email', 'firstName', 'lastName', 'Details');
obj.Details = _.map(obj.Details, function(detail) {
return detail.pick('token', ...);
});

关于javascript - underscore.js:_.pick 以提取数组中对象内的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39881577/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com