You need to enable JavaScript to run this app. JavaScript如何遍历非数组对象,或转换为数组后再进行遍历?
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何遍历非数组对象,或转换为数组后再进行遍历?

JavaScript遍历非数组对象的实现方案

你可以根据使用场景选择直接遍历对象,或是转成数组后使用map等数组方法,两种方式的实现代码如下:

方案1:直接遍历对象

方法1:for...in循环

// 假设你的对象存储在变量sourceData中
const sourceData = {
  "7/15/2021": {
    "date": "2021-07-15T00:00:00",
    "value": ["e1", "e 2"]
  },
  "7/12/2021": {
    "date": "2021-07-12T00:00:00",
    "value": ["e 3", "4", "e 5", "e 6"]
  }
};

for (const dateKey in sourceData) {
  // 过滤原型链上的继承属性,仅取对象自身属性
  if (Object.hasOwn(sourceData, dateKey)) {
    const currentItem = sourceData[dateKey];
    // 此处写入你的业务逻辑,示例打印:
    console.log('日期键:', dateKey);
    console.log('对应值:', currentItem);
  }
}

方法2:静态方法迭代遍历

用Object.keys()/Object.values()/Object.entries()拿到可迭代的对象属性集合,配合forEach遍历:

// 遍历所有属性值
Object.values(sourceData).forEach(currentItem => {
  console.log('日期对象:', currentItem);
  // 业务逻辑写在这里
});

方案2:转数组后使用map等数组方法

如果需要用到map/filter/reduce等数组专属方法,可以先将对象转为数组:

// Object.entries会把对象转为[[键1, 值1], [键2, 值2]]格式的二维数组
const dataArray = Object.entries(sourceData);

// 转数组后即可正常调用map方法
const processedResult = dataArray.map(([dateKey, currentItem]) => {
  // 示例:返回处理后的自定义结构
  return {
    originalKey: dateKey,
    formattedDate: currentItem.date,
    valueCount: currentItem.value.length
  };
});

console.log(processedResult);

内容的提问来源于stack exchange,提问作者user11636508

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 22:09:03