gpt4 book ai didi

javascript - 基于字符串数组修改数组中对象的属性

转载 作者:行者123 更新时间:2023-11-28 17:01:31 27 4
gpt4 key购买 nike

首先,我很抱歉这可能与某个地方的另一个问题重复,但我不知道我的搜索中的措辞是否错误,但我找不到该问题的确切解决方案正在拥有,所以如果这是重复的,我提前表示歉意。

现在是问题。

我有一个对象数组,它具有各种属性。然后我有另一个字符串数组,其中每个字符串代表对象数组中对象的属性名称。

我想创建一个新的对象数组,但数组中的对象仅具有名称来自字符串数组的属性。

我已经摆弄这个了几个小时了,但还没有真正让它按预期工作。我尝试过结合map和indexOf做一些Object.keys的东西,但我觉得我的逻辑中遗漏了一些东西,此时我只是不确定是什么。

所以基本上我有一个对象数组:

data = [
{
id: 1,
name: 'john',
value: 5
},
{
id: 2,
name: 'ben',
value: 10
},
{
id: 3,
name: 'lisa',
value: 12
},
];

还有一个字符串数组:desiredKeys = ['id', 'name'];

我想创建一个新的对象数组,其中每个对象只有“id”和“name”属性。

这是一个笨蛋:

https://next.plnkr.co/edit/nU4Y85j7NFuFQqAx?open=lib%2Fapp.ts

我的目标是创建一个新的对象数组,但其中的对象仅具有“desiredKeys”数组中的属性,即:

[
{
id: 1,
name: 'john'
},
{
id: 2,
name: 'ben'
},
{
id: 3,
name: 'lisa'
},
];

欢迎任何提示,提前致谢!

最佳答案

您可以映射数据数组并使用Object.fromEntries()像这样:

const data=[{id:1,name:"john",value:5},{id:2,name:"ben",value:10},{id:3,name:"lisa",value:12},],
desiredKeys = ['id', 'name'];

const output = data.map(o =>
Object.fromEntries( desiredKeys.map(k => [k, o[k]]))
)

console.log(output)

如果不支持Object.fromEntries(),您可以reduce获取每个对象的子集的键:

const data=[{id:1,name:"john",value:5},{id:2,name:"ben",value:10},{id:3,name:"lisa",value:12},],
desiredKeys = ['id', 'name'];

const output = data.map(o =>
desiredKeys.reduce((a, k) => ({ ...a, [k]: o[k] }), {})
)

console.log(output)

关于javascript - 基于字符串数组修改数组中对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57303899/

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