js对象转数组

2021-12-01 14:31:24

前两天听到后台同事说js对象不能直接转数组, 我心里一颤,好像确实没有, 之前每次都for...in去处理。

今天看到了ES6+ Array.from()方法,该方法用于将类数组对象(array-like)和可遍历的对象(iterable)转换为真正的数组进行使用。

var arrLike = {
  '0': 'apple',
  '1': 'banana',
  '2': 'orange',
  length: 3
};
var arr = Array.from(arrLike);
console.log(arr)  // ['apple', 'banana', 'orange']

哇, 太神奇了, 直接就把对对象转化成了数组。 但是, 当我去掉length属性后,就拿不到数组了, 

var arrLike = {
  '0': 'apple',
  '1': 'banana',
  '2': 'orange',
};
var arr = Array.from(arrLike);
console.log(arr)  // []

数据每次返回,后台又不可能在对象后面还给我们加个length属性,所以,这个方法直接被放弃。 我们稍微改良一下, 也能实现效果

var arrLike = {
  '0': 'apple',
  '1': 'banana',
  '2': 'orange'
};

var arr = Array.from(Object.values(arrLike), function (x) {
  return x;
});
console.log(arr)  // ['apple', 'banana', 'orange']

上面也得到了我们想要的数组。 哎呀,问题又来了,既然要数组,何必那么麻烦,我们直接一个 Object.values(arrLike)不就拿到了想要的数组。嗯。。。又水了一片文章, 就当逗乐吧

关于

联系方式 :

mail: hey_cool@163.com ,
QQ:583459700

备案许可证编号:蜀ICP备16005545号-1 © COPYRIGHT 2015-2024 zhmzjl.com | by: KAPO