如何修改JavaScript代码,遍历数组对象得到所有County独立对象?
如何获取数组对象中的所有County值?
嘿,我来帮你搞定这个问题!先看看你现在的代码:
var data = [{ County: "Cork", date: '1/1/2018', num: 100 }, { County: "Roscommon", date: '07/10/2017', num: 27 }]; var Counties = {}; for (County in data) { for (var i = 0; i <= 1; i++) { Counties[data[i].County] = data[i].County; } }
你说这段代码最后只返回{County: "Roscommon"}?其实问题出在多余的嵌套循环和不合适的数组遍历方式上:for...in是用来遍历对象属性的,用来遍历数组本身就不太合适,而且内层的循环会重复处理数组里的元素,最后反而可能因为重复赋值导致结果不符合预期。
下面给你几个简单的修改方案,都能帮你获取到所有County值:
方案一:基础for循环遍历
最直观的方式,直接遍历数组的每个元素,把每个County值存入目标对象:
var data = [{ County: "Cork", date: '1/1/2018', num: 100 }, { County: "Roscommon", date: '07/10/2017', num: 27 }]; var Counties = {}; // 遍历数组的每一项 for (var i = 0; i < data.length; i++) { var countyName = data[i].County; Counties[countyName] = countyName; } console.log(Counties); // 输出 { Cork: "Cork", Roscommon: "Roscommon" }
方案二:forEach遍历(更简洁)
如果喜欢更清爽的写法,用数组的forEach方法就很合适:
var data = [{ County: "Cork", date: '1/1/2018', num: 100 }, { County: "Roscommon", date: '07/10/2017', num: 27 }]; var Counties = {}; data.forEach(item => { Counties[item.County] = item.County; }); console.log(Counties); // 输出 { Cork: "Cork", Roscommon: "Roscommon" }
方案三:reduce方法(一行构建对象)
想要更紧凑的代码?用reduce方法可以直接构建出目标对象:
var data = [{ County: "Cork", date: '1/1/2018', num: 100 }, { County: "Roscommon", date: '07/10/2017', num: 27 }]; var Counties = data.reduce((acc, item) => ({ ...acc, [item.County]: item.County }), {}); console.log(Counties); // 输出 { Cork: "Cork", Roscommon: "Roscommon" }
补充:如果想要数组格式的结果
如果你实际想要的是[{County: "Cork"}, {County: "Roscommon"}]这样的数组(而不是键值对对象),那用map方法就能轻松实现:
var data = [{ County: "Cork", date: '1/1/2018', num: 100 }, { County: "Roscommon", date: '07/10/2017', num: 27 }]; var countyList = data.map(item => ({ County: item.County })); console.log(countyList); // 输出 [{County: "Cork"}, {County: "Roscommon"}]
内容的提问来源于stack exchange,提问作者user1655130
相关产品推荐
相关产品推荐

