JavaScript 的 ES8 中引入了许多新特性,其中有两个非常实用的新方法:Object.values() 和 Object.entries()。这两个方法可以帮助我们更快速、更方便地处理对象的值和属性。
什么是 Object.values()?
Object.values() 是一个新方法,它可以返回一个包含对象属性值的数组。这个方法可以接收一个参数 —— 要被处理的对象。下面是这个方法的语法:
Object.values(obj)
其中,obj 是要被处理的对象。这个方法会返回一个由该对象的属性值构成的数组。
Object.values() 的例子
下面来看一个例子,说明 Object.values() 的用法:
const myObject = { name: 'John', age: 24, city: 'New York' }; const values = Object.values(myObject); console.log(values);
这个例子可以返回下面这个结果:
['John', 24, 'New York']
这意味着我们可以更方便地获取到一个对象的属性值,并将其放进一个数组里面。
什么是 Object.entries()?
Object.entries() 是另一个新方法,它可以返回一个包含对象属性键值对的数组。这个方法同样可以接收一个参数 —— 要被处理的对象。下面是这个方法的语法:
Object.entries(obj)
其中,obj 是要被处理的对象。这个方法会返回一个由该对象的所有属性键值对组成的数组。
Object.entries() 的例子
下面来看一个例子,说明 Object.entries() 的用法:
const myObject = { name: 'John', age: 24, city: 'New York' }; const entries = Object.entries(myObject); console.log(entries);
这个例子可以返回下面这个结果:
[ ['name', 'John'], ['age', 24], ['city', 'New York'] ]
这意味着我们可以更方便地将对象的属性键值对存入一个数组中。
使用 Object.values() 和 Object.entries() 改进代码
我们可以使用 Object.values() 和 Object.entries() 来改进代码,并让代码更好地工作。
下面是一个使用 Object.values() 和 Object.entries() 的例子,以验证输入对象 obj 是否包含在数组 arr 中。
// javascriptcn.com 代码示例 // 使用 Object.values() 和 Object.entries() 改进代码 function containsObject(arr, obj) { for (let value of Object.values(arr)) { if (isEqual(value, obj)) { return true; } } for (let [key, value] of Object.entries(arr)) { if (isEqual(value, obj)) { return true; } else if (typeof obj === 'string' && isEqual(key, obj)) { return true; } } return false; } // 定义辅助函数 function isEqual(a, b) { if (a === b) { return true; } else if (typeof a === 'object' && typeof b === 'object') { return JSON.stringify(a) === JSON.stringify(b); } else { return false; } } // 测试代码 const arr = [ { name: 'John', age: 24, city: 'New York' }, { name: 'Alex', age: 30, city: 'Los Angeles' }, { name: 'Mary', age: 26, city: 'Chicago' } ]; const obj1 = { name: 'John', age: 24, city: 'New York' }; const obj2 = { id: 2, name: 'Alex', age: 30, city: 'Los Angeles' }; console.log(containsObject(arr, obj1)); // true console.log(containsObject(arr, obj2)); // true console.log(containsObject(arr, 'Mary')); // true
上面这个例子使用了 Object.values() 和 Object.entries() 来遍历数组和对象,并通过 isEqual() 辅助函数来比较两个值是否相等。
总结
ES8 的 Object.values() 和 Object.entries() 新特性为 JavaScript 提供了更方便的处理对象属性值和键值对的方法。这两个方法可以帮助开发者更快速、更方便地处理对象的属性,并且可以改进代码,让代码更加简洁易读。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/654494e37d4982a6ebe6d5ae