gpt4 book ai didi

javascript - 使用 Object.keys() 与 Object.values() 从对象属性创建数组

转载 作者:行者123 更新时间:2023-12-04 01:28:08 29 4
gpt4 key购买 nike

这是猫品种的对象,以及每个对象中的猫数量:

const cats = {
abyssinian: {
number: 23
},
persian: {
number: 12
},
siamese: {
number: 7
}
};

假设我想计算猫的总和。我将使用 reduce 计算数组值的总和。

但是要从上面的对象创建一个数组,我有两个选择:
  • Object.keys()
  • Object.values()


  • // object
    const cats = { abyssinian: { number: 23 }, persian: { number: 12 }, siamese: { number: 7 } };

    // sum array values with reduce
    const total = numbers => numbers.reduce((acc, cur) => acc + cur);

    // 1.
    // create array with Object.keys()
    const numbersByKeys = Object.keys(cats).map(breed => cats[breed].number);
    console.log(`Sum with Object.keys(): ${total(numbersByKeys)}`);

    // 2.
    // create array with Object.values()
    const numbersByValues = Object.values(cats).map(breed => breed.number);
    console.log(`Sum with Object.values(): ${total(numbersByValues)}`);


    我什么时候可以选择其中之一?这里的最佳做法是什么?

    最佳答案

    使用.keys()如果您需要对键做一些事情而不是检索值。否则,您只能获取键以访问值,如果您可以使用不同的方法直接获取值,则这是多余的 - 因此,在这种情况下,不妨使用 Object.values()从一开始就。
    Object.keys 的示例可能有用:

    const obj = {
    prop1: 'val1',
    prop2: 'val2'
    };

    const result = Object.keys(obj).map((key) => [key, obj[key]]);
    console.log(result);


    您也可以使用 Object.entries一次获取键和值:

    const obj = {
    prop1: 'val1',
    prop2: 'val2'
    };

    const result = Object.entries(obj).map(([key, val]) => key + '---' + val);
    console.log(result);

    关于javascript - 使用 Object.keys() 与 Object.values() 从对象属性创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54974965/

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