JavaScript 对象方法

Object.keys(), Object.values(), 和 Object.entries() 是JavaScript中用于处理对象的非常有用的方法,它们分别用于获取对象自身的可枚举属性名、属性值和键值对数组。下面是这三个方法的详细说明和用法示例:

Object.keys()

  • 用途:返回一个由给定对象的所有可枚举自有属性的属性名组成的数组。
  • 语法:Object.keys(obj)
  • 示例:
const person = { name: "Alice", age: 30, city: "New York" };
console.log(Object.keys(person)); // 输出: ['name', 'age', 'city']

Object.values()

  • 用途:返回一个由给定对象的所有可枚举自有属性的属性值组成的数组。
  • 语法:Object.values(obj)
  • 示例:
const person = { name: "Alice", age: 30, city: "New York" };
console.log(Object.values(person)); // 输出: ['Alice', 30, 'New York']

Object.entries()

  • 用途:返回一个由给定对象的所有可枚举自有属性的键值对组成的数组。每个键值对都是一个包含两个元素的数组 [key, value]。
  • 语法:Object.entries(obj)
  • 示例:
const person = { name: "Alice", age: 30, city: "New York" };
console.log(Object.entries(person));
// 输出: [['name', 'Alice'], ['age', 30], ['city', 'New York']]

应用场景

  • 遍历对象:这些方法常用于配合迭代器(如 for...of 循环)来遍历对象的属性。
  • 转换对象:可以很容易地将对象转换为映射(Map)、数组或其他数据结构。
  • 克隆和合并对象:结合其他方法,可以方便地创建对象的深拷贝或合并多个对象。

例如,使用 Object.entries() 配合 Array.prototype.map() 可以方便地基于现有对象创建一个新对象,其中每个值都经过某种变换:

const person = { name: "Alice", age: 30 };
const transformedPerson = Object.fromEntries(
  Object.entries(person).map(([key, value]) => [key, value.toUpperCase()])
);

console.log(transformedPerson); // 输出: { NAME: 'ALICE', AGE: '30' }

 

Object.fromEntries() 方法是 JavaScript 中的一个函数,它于 ECMAScript 2019 (ES10) 规范中引入。此函数的作用是将一个键值对的列表(通常来自于 Map、Array 或其他可迭代的键值对集合)转换成一个对象。

具体来说,Object.fromEntries() 接受一个 iterable(比如数组或者 Map)作为参数,这个 iterable 中的每个元素应该是长度为 2 的数组(或子 iterable),代表一个键值对。然后,该方法会创建一个新的对象,其中 iterable 里的每个键值对都会成为新对象的一个属性,键作为属性名,值作为对应的属性值。

示例

使用数组

const entries = [
  ['name', 'Alice'],
  ['age', 30],
  ['job', 'Engineer']
];

const obj = Object.fromEntries(entries);
console.log(obj); // 输出: { name: 'Alice', age: 30, job: 'Engineer' }

使用 Map

const map = new Map();
map.set('name', 'Bob');
map.set('age', 25);

const objFromMap = Object.fromEntries(map);
console.log(objFromMap); // 输出: { name: 'Bob', age: 25 }

 

注意事项

  • 如果传入的 iterable 中包含非键值对格式的数据(即元素不是两个元素的数组),Object.fromEntries() 可能会抛出错误或产生未定义的行为。
  • 该方法对于将键值对数据转换为普通对象非常有用,特别是在处理 URLSearchParams、解析 CSV 数据或与 Web API 交互等场景中。

总的来说,Object.fromEntries() 提供了一种简洁的方式来将键值对数据结构转换成 JavaScript 对象,增强了数据处理的灵活性和效率。

 

 

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
Node.js 内置模块
JavaScript getter和setter
Node.js 的 URL 的模块缺陷
Git push 错误:Updates were rejected because the remote contains work that you do not have locally
WordPress 用户信息
WordPress 常用函数 / sanitize_user
River 主题
ES6 Promise 和 async/await 教程