JavaScript中如何将带键名的数组转换为仅含值的数组?
解决方法:移除对象/类数组的键名,提取值为纯数组
嘿,这个需求在JavaScript里很容易实现,我给你几种常用的方案,根据你的实际场景选就行:
方案1:用Object.values()(最简洁)
首先要说明的是,你写的[ 0:"2015", 1:"2016", 2:"2017", 3:"2018" ]其实不是标准的JavaScript数组写法(数组不会显式声明索引键),更像是一个带数字键的普通对象。这种情况用Object.values()直接提取所有值就好:
const originalObj = { 0:"2015", 1:"2016", 2:"2017", 3:"2018" }; const pureArray = Object.values(originalObj); console.log(pureArray); // 输出: ["2015", "2016", "2017", "2018"]
Object.values()会自动遍历对象的所有可枚举属性值,并且按照数字键的升序排列,完美匹配你的需求。
方案2:用Array.from()(适用于类数组对象)
如果你的数据源是类数组对象(比如带有length属性的对象、DOM元素集合、arguments对象等),可以用Array.from()转换:
const arrayLikeObj = { 0:"2015", 1:"2016", 2:"2017", 3:"2018", length: 4 }; const pureArray = Array.from(arrayLikeObj); console.log(pureArray); // 输出: ["2015", "2016", "2017", "2018"]
方案3:手动循环(兼容性最广)
如果需要兼容非常老旧的浏览器(不支持ES6+API),可以用普通的for...in循环手动提取值:
const originalObj = { 0:"2015", 1:"2016", 2:"2017", 3:"2018" }; const pureArray = []; for (const key in originalObj) { // 确保只取数字键(避免对象原型上的额外属性) if (!isNaN(parseInt(key))) { pureArray.push(originalObj[key]); } } console.log(pureArray); // 输出: ["2015", "2016", "2017", "2018"]
补充说明
如果你只是笔误,实际的数据源是标准JavaScript数组(比如["2015", "2016", "2017", "2018"]),那它本身就是你想要的结果——数组的索引是隐式存在的,不需要显式声明,直接使用即可。
内容的提问来源于stack exchange,提问作者Matarishvan
相关产品推荐
相关产品推荐

