今天做赛码网的一个编程题,要求结果在一行中输出,突然就蒙了,以前都是一个个打印出来的,就会自动换行,也想不到除了遍历结果数组的其他方法。只有脑海中隐隐约约记得的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 ]