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)不就拿到了想要的数组。嗯。。。又水了一片文章, 就当逗乐吧