首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从对象数组中找到多个属性值?

如何从对象数组中找到多个属性值?
EN

Stack Overflow用户
提问于 2022-11-03 15:51:11
回答 2查看 40关注 0票数 0

我有一个数组的对象,

代码语言:javascript
复制
customer1 = [
    {"key": "name",
     "value": "Peter"},
    {"key": "age",
     "value": 23},
    {"key": "address",
     "value": "xyz St, abcd"},
    {"key": "points",
     "value": 234}
    ]

我想从这个对象中找出年龄和地址,推荐的和最佳的方法是什么?对于真正的应用程序,我可能在这个数组中有20-40个键值对象,其中我可能想要访问5-10个值。

我现在所做的就是循环这个对象,并使用条件来查找和赋值给我的变量。但是在这种方法中,我必须编写多个if表达式(5-10)。

例如,

代码语言:javascript
复制
let name: string;
let points: number;

for (var item of customer1) {
    if (item.key === "name") {
        name = item.value;
    } else if (item.key === "points") {
        points = item.value;
    }};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-04 07:07:03

您可以在Array.filter()Array.map()方法的帮助下实现这一需求。

现场演示

代码语言:javascript
复制
const customer1 = [
  { "key": "name", "value": "Peter" },
  { "key": "age", "value": 23 },
  { "key": "address", "value": "xyz St, abcd" },
  { "key": "points", "value": 234 }
];

const searchKeys = ['age', 'address'];

const res = customer1.filter(obj => searchKeys.includes(obj.key)).map(({ value}) => value);

const [age, address] = res;

console.log(age);
console.log(address);

票数 0
EN

Stack Overflow用户

发布于 2022-11-03 16:15:09

你总是要显式地写"name""points",.因为您不能解析字符串值并使用它来标识同名变量。但是,为了避免使用多个其他语句,如果,也许开关case语句更合适和更易读?

代码语言:javascript
复制
interface CustomerProperty {
    key: string,
    value: string | number
}

let customer1: CustomerProperty[] = [
    {
        "key": "name",
        "value": "Peter"
    },
    {
        "key": "age",
        "value": 23},
    {
        "key": "address",
        "value": "xyz St, abcd"},
    {
        "key": "points",
        "value": 234
    }
];

let nameValue: string;
let pointsValue: number;
for (var item of customer1) {
    switch (item.key) {
        case "name":
            nameValue = item.value as string;
            break;
        case "points":
            pointsValue = item.value as number;
            break;
    }
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74305929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档