在前端开发中,经常需要处理对象数据,例如获取对象中的属性值或键值对列表等。在过去,我们可能需要使用循环或其他方法来处理对象,但是在 ECMAScript 2021(ES12)中,新增了 Object.values 和 Object.entries 方法,可以更便捷地处理对象数据。
Object.values 方法
Object.values 方法可以返回一个由对象的值组成的数组,数组中的值按照对象属性的顺序排列。例如:
const obj = { a: 1, b: 2, c: 3 }; const values = Object.values(obj); console.log(values); // [1, 2, 3]
在上面的例子中,Object.values 方法返回了一个数组,包含了 obj 对象中所有的值。
Object.values 方法的使用场景很广泛,例如可以用来获取对象中的所有属性值,或者过滤对象中的某些属性值等。
示例:获取对象中的所有属性值
const obj = { a: 1, b: 2, c: 3 }; const values = Object.values(obj); console.log(values); // [1, 2, 3]
示例:过滤对象中的某些属性值
const obj = { a: 1, b: 2, c: 3 }; const values = Object.values(obj).filter(value => value !== 2); console.log(values); // [1, 3]
Object.entries 方法
Object.entries 方法可以返回一个由对象的键值对组成的数组,数组中的每个元素都是一个长度为 2 的数组,第一个元素是键名,第二个元素是对应的值。例如:
const obj = { a: 1, b: 2, c: 3 }; const entries = Object.entries(obj); console.log(entries); // [["a", 1], ["b", 2], ["c", 3]]
在上面的例子中,Object.entries 方法返回了一个数组,包含了 obj 对象中所有的键值对。
Object.entries 方法的使用场景也很广泛,例如可以用来将对象转换为 Map,或者将对象中的键值对进行排序等。
示例:将对象转换为 Map
const obj = { a: 1, b: 2, c: 3 }; const map = new Map(Object.entries(obj)); console.log(map); // Map { "a" => 1, "b" => 2, "c" => 3 }
示例:将对象中的键值对按照键名排序
const obj = { b: 2, c: 3, a: 1 }; const entries = Object.entries(obj).sort(([key1], [key2]) => key1.localeCompare(key2)); console.log(entries); // [["a", 1], ["b", 2], ["c", 3]]
在上面的例子中,我们先使用 Object.entries 方法将对象转换为键值对数组,然后使用 sort 方法对数组进行排序,最后得到了按照键名排序后的键值对数组。
总结
Object.values 和 Object.entries 方法是 ECMAScript 2021(ES12)中新增的两个方法,可以更便捷地处理对象数据。Object.values 方法可以返回一个由对象的值组成的数组,Object.entries 方法可以返回一个由对象的键值对组成的数组。这两个方法可以用于获取对象中的属性值或键值对列表,也可以用于转换对象为其他数据类型,或者对对象中的键值对进行排序等。在实际开发中,我们可以根据具体的场景选择合适的方法来处理对象数据,提高开发效率。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/657a9339d2f5e1655d4f8668