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

Rob*_*ral 2 javascript string function object ecmascript-6

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

const cats = {
  abyssinian: {
    number: 23
  },
  persian: {
    number: 12
  },
  siamese: {
    number: 7
  }
};
Run Code Online (Sandbox Code Playgroud)

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

但是要从上面的对象创建一个数组,我有两个选择:

  1. Object.keys()
  2. Object.values()

const cats = {
  abyssinian: {
    number: 23
  },
  persian: {
    number: 12
  },
  siamese: {
    number: 7
  }
};
Run Code Online (Sandbox Code Playgroud)

我什么时候会选择一个?这里的最佳做法是什么?

Sno*_*now 5

使用.keys(),如果你需要做的钥匙的东西其他比对检索值。否则,您只会获取键来访问值,如果可以使用其他方法直接获取值,则这是多余的-因此,在这种情况下,Object.values()一开始就可以使用。

Object.keys可能有用的示例:

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

const result = Object.keys(obj).map((key) => [key, obj[key]]);
console.log(result);
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 处理大型数组时,`Object.keys` 稍微快一些 https://jsperf.com/object-keys-vs-for-in-with-closure/111,但代码清晰度和可读性在 99% 的情况下更为重要。 (2认同)