gpt4 book ai didi

javascript - 循环遍历对象的关联数组

转载 作者:行者123 更新时间:2023-12-01 03:02:23 24 4
gpt4 key购买 nike

我有一个对象数组,我想获取具有相同 id 的汽车的名称并显示它们的名称和年份,如下所示:

法拉利2000年2月1日、2010年10月23日

兰博2018年12月8日、2012年2月2日

不是这样的:

法拉利 01-02-2000

法拉利2010年10月23日

兰博2018年12月8日

兰博 02-02-2012

cars = [

[0] : { year: "01-02-2000"
sport:{id: "1111", name: "ferrai"}

}

[1] : { year: "10-23-2010"
sport:{id: "1111", name: "ferrari"}

}

[2] : {year: "08-12-2018"
sport:{id: "2222", name: "lambo"}

}

[3] : {year: "02-02-2012"
sport:{id: "2222", name: "lambo"}

}

]

我怎样才能在 angular2+ 中做到这一点?我已经尝试过这段代码:

.html 文件

<div *ngFor="let obj of cars">
<div *ngFor="let name of obj.sport">
<div>{{getCars(name)}}</div>
</div>
</div>

.ts 文件

getCars(obj){
var sport = obj.sport;
var year = obj.year;

//do stuff

}

感谢任何帮助!

最佳答案

reduce 的答案很漂亮,我建议学习该解决方案,因为 .reduce 是原生 JS 中最强大、最通用的方法之一。

这是一个更普通的解决方案,不使用高阶函数:

var cars = [
{
year: "01-02-2000",
sport:{id: "1111", name: "ferrari"}

},
{
year: "10-23-2010",
sport:{id: "1111", name: "ferrari"}
},
{
year: "08-12-2018",
sport:{id: "2222", name: "lambo"}
},
{
year: "02-02-2012",
sport:{id: "2222", name: "lambo"}
}
]


function simplifyInventory(cars) {
var objList = {};
for (var i = 0; i < cars.length; i++) {
if (objList.hasOwnProperty(cars[i].sport.name) === false) {
objList[cars[i].sport.name] = [cars[i].year];
} else {
objList[cars[i].sport.name].push(cars[i].year)
}
}
return objList;
}

console.log(simplifyInventory(cars));

=====console=====

{ ferrari: [ '01-02-2000', '10-23-2010' ], lambo: [ '08-12-2018', '02-02-2012' ] }

然后您可以轻松地将其放入几乎任何形式。

关于javascript - 循环遍历对象的关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46375300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com