第一种方法:

Object.values(obj)

示例:
var obj = { name: '小明', age: 22 };
console.log( Object.values(obj) );  // ['小明', 22]

第二种方法:

for-in循环

示例:
var obj = { name: '小明', age: 22 };
var arr = [];
for(let i in obj) {
  arr.push (obj[i] )  //
}
console.log(arr);  // ['小明', 22]

相同点

  1. 都可以将对象转化为数组;
  2. 返回值都可以是对象的属性值;
  3. 也都可以将字符串转化为数组。(示例1的最后一条打印)

区别

  1. for-in 循环可以枚举原型链中的属性,而Object.values(obj)不可以。(示例1);
  2. for- in 的返回值可以是对象的属性名(键名)和属性值,而Object.values(obj)只返回属性值。(示例2)
示例1:
  var obj = { name: '小明', age: 22 };
  obj.__proto__.sex = '男';  //往原型链上插入一条属性
  var arr = [];
  for(let i in obj) {
    arr.push (obj[i] )  //
  }  
  console.log(arr);  // ['小明', 22, '男']
  cosole.log(Object.values(obj));  // ['小明', 22]
  cosole.log(Object.values(‘abc’));  // ['a, 'b', 'c']
示例2:
  var obj = { name: '小明', age: 22 };
  var arr = [];
  for(let i in obj) {
    // arr.push (obj[i] )  //返回属性值
    arr.push (i)  //返回键名
  }  
  console.log(arr);  // ['name', 22]
  cosole.log(Object.values(obj));  // ['小明', 22]

总结

这两种方法都可以将对象转化为数组,如果只是简单转换,Object.values(obj)更加简洁,如果想获取键名和原型链上的属性值,就可以用for- in循环。

返回值是否能获取原型链上的属性
Object.values(obj)只返回对象的值
for-in循环可返回对象的键名和值
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐