You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:15:18