简体   繁体   English

JavaScript通过值对数组进行排序并显示在HTML表中

[英]JavaScript Sort Array through value and display in HTML table

So, I have this list and I need to sort them after a certain brand of car. 因此,我有此列表,我需要按照特定品牌的汽车对其进行排序。 For example, Audi. 例如,奥迪。 And display them in an HTML table, one column with names and the other one with vehicles owned, the first ones being the Audi vehicle owners and then the others. 并将其显示在HTML表格中,一列包含名称,另一列包含拥有的车辆,第一个是奥迪车主,然后是其他人。 How can I do that? 我怎样才能做到这一点?

const people = [
  { name: "Ana", cars: "Audi" },
  { name: "Victoria", cars: ["Audi", "BMW"] },
  { name: "Grace", cars: ["Volkwagen", "Audi"] },
  { name: "Dan", cars: ["Opel", "Volkswagen"] },
  { name: "Josh", cars: ["Opel"] },
  { name: "John", cars: ["BMW", "Jaguar"] },
  { name: "Damon", cars: ["Renault", "Mercedes", "Audi"] },
];

Thank you! 谢谢!

Using reduce() you could group the car's owners. 使用reduce()可以将车主分组。

 const people = [ { name: "Ana", cars: ["Audi"] }, { name: "Victoria", cars: ["Audi", "BMW"] }, { name: "Grace", cars: ["Volkswagen", "Audi"] }, { name: "Dan", cars: ["Opel", "Volkswagen"] }, { name: "Josh", cars: ["Opel"] }, { name: "John", cars: ["BMW", "Jaguar"] }, { name: "Damon", cars: ["Renault", "Mercedes", "Audi"] } ]; var brands = people.reduce((acc, o) => { o.cars.forEach(c => { if (!(c in acc)) acc[c] = []; acc[c].push(o.name); }); return acc; }, {}); var cont = document.getElementById("brands"); for (let b in brands) { var brand = document.createElement("p"); brand.innerHTML = "<b>" + b + "</b>: " + brands[b].join(" "); cont.appendChild(brand); } //console.log(brands); 
 <p>Brands and owners</p> <div id="brands"> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM