今天做赛码网的一个编程题,要求结果在一行中输出,突然就蒙了,以前都是一个个打印出来的,就会自动换行,也想不到除了遍历结果数组的其他方法。只有脑海中隐隐约约记得的keys()和values()。
想一次性拿到对象的属性或者属性值,可以利用Object.keys()和Object.values()。返回结果均放在一个数组中,如果想纯输出数组中的值,不以数组的数据结构输出,可以利用…扩展运算符进行取出就行啦~
Object.keys() 返回键值数组
Object.values() 返回属性值数组
Object.entries() 返回一个数组,该数组存放所有可枚举的键值对,键值对以数组的形式存储。
代码示例:
var arr = [1,3,5,7] console.log(...arr.keys())//0 1 2 3 console.log([...arr.keys()])//[ 0, 1, 2, 3 ] console.log(Object.keys(arr))//[ '0', '1', '2', '3' ] console.log(Object.values(arr))//[ 1, 3, 5, 7 ] console.log(Object.entries(arr))//[ [ '0', 1 ], [ '1', 3 ], [ '2', 5 ], [ '3', 7 ] ] var obj1 = { x:1, y:2, z:5 } console.log(Object.keys(obj1))//[ 'x', 'y', 'z' ] console.log(Object.values(obj1))//[ 1, 2, 5 ] console.log(Object.entries(obj1))//[ [ 'x', 1 ], [ 'y', 2 ], [ 'z', 5 ] ] //如果想在结果中纯输出数组中的值,可以用...运算符即可 //对上述对象实例obj1,输出如下 console.log(...Object.keys(obj1))//x y z console.log(...Object.values(obj1))//1 2 5 console.log(...Object.entries(obj1))//[ 'x', 1 ] [ 'y', 2 ] [ 'z', 5 ]