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
相关产品推荐
相关产品推荐

