这些方法是通用的,也支持Map,Set,Array
对于普通对象,下列这些方法是可用的:

区别:
image.png

Object.keys/values/entries 会忽略 symbol 属性
就像 for..in 循环一样,这些方法会忽略使用 Symbol(…) 作为键的属性。
通常这很方便。但是,如果我们也想要 Symbol 类型的键,那么这儿有一个单独的方法 Object.getOwnPropertySymbols,它会返回一个只包含 Symbol 类型的键的数组。另外,还有一种方法 Reflect.ownKeys(obj),它会返回 所有 键。

转换对象

对象缺少数组存在的许多方法,例如 map 和 filter 等
如果我们想应用它们,那么我们可以使用 Object.entries,然后使用 Object.fromEntries:

  1. 使用 Object.entries(obj) 从 obj 获取由键/值对组成的数组。
  2. 对该数组使用数组方法,例如 map。
  3. 对结果数组使用 Object.fromEntries(array) 方法,将结果转回成对象。
  1. let prices = {
  2. banana: 1,
  3. orange: 2,
  4. meat: 4,
  5. };
  6. let doublePrices = Object.fromEntries(
  7. // 转换为数组,之后使用 map 方法,然后通过 fromEntries 再转回到对象
  8. Object.entries(prices).map(([key, value]) => [key, value * 2])
  9. );
  10. alert(doublePrices.meat); // 8