js对象转换为数组的两种方法

第一种方法:

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循环可返回对象的键名和值
  • 16
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值