在JavaScript循环中对对象进行分类
我的目标如下:在JavaScript循环中对对象进行分类,javascript,object,categories,Javascript,Object,Categories,我的目标如下: var object = [ { "category": "Apple", "color": "green" }, { "category": "Orange", "color": "Orange" }, { "category": "Apple", "color": "green" } ]; 我试图通过category迭代数据,因此以下内容将显示在列表中: 苹果 苹果 橙色的 下面是我尝试过的代码,但
var object = [
{
"category": "Apple",
"color": "green"
},
{
"category": "Orange",
"color": "Orange"
},
{
"category": "Apple",
"color": "green"
}
];
我试图通过category迭代数据,因此以下内容将显示在列表中:
- 苹果
- 苹果
- 橙色的
function makeUL(object) {
var list = document.createElement('ul');
for(var i = 0; i < object.length; i++) {
var item = document.createElement('li');
var a = document.createElement("a");
a.textContent = object[i].category;
a.setAttribute('href', 'http://test');
item.appendChild(a);
list.appendChild(item);
}
return list;
}
函数makeUL(对象){
var list=document.createElement('ul');
对于(变量i=0;i
如果希望数组按字母顺序排序(描述顺序,从A到Z),必须先调用.sort()
方法
function makeUL(object) {
var list = document.createElement('ul');
object.sort();
for(var i = 0; i < object.length; i++) {
var item = document.createElement('li');
var a = document.createElement("a");
while(i<length - 1 && object[i].category == object[i+1].category)
a.textContent += object[i].color + ", ";
a.setAttribute('href', 'http://test');
item.appendChild(a);
list.appendChild(item);
}
return list;
}
函数makeUL(对象){
var list=document.createElement('ul');
object.sort();
对于(变量i=0;i 而(i您可以使用Array.sort
看
在for循环中使用数组之前对其进行排序
object.sort(function(a,b){
return a.category > b.category
});
结果
[ { category: 'Apple', color: 'green' },
{ category: 'Apple', color: 'green' },
{ category: 'Orange', color: 'Orange' } ]
具有组更改的解决方案:
var object=[{“category”:“Apple”,“color”:“green”},{“category”:“Orange”,“color”:“Orange”},{“category”:“Apple”,“color”:“green”};
函数makeUL(对象){
var div=document.createElement('div');
sort(函数(a,b){返回a.category.localeCompare(b.category);});
object.forEach(函数(aa){
var a=document.createElement(“a”),
item=document.createElement('li'),
P
如果(aa.category!==此.最后一个){
p=document.createElement('p');
p、 innerHTML=aa.category;
儿童组(p);
this.list=document.createElement('ul');
div.appendChild(此列表);
this.last=aa.category;
}
a、 textContent=aa.category;
a、 setAttribute('href','http://test');
项目1(a);
此.list.appendChild(项);
},{last:undefined,list:undefined});
返回div;
}
document.body.appendChild(makeUL(object))
您是否希望对象
自动排序?有一种排序方法。.对数组进行排序是不够的。很抱歉,我应该清楚这一点。它们需要分类,以便我可以有标题,例如下面列出两个苹果的苹果标题和下面列出一个橙色的橙色标题。I在这种情况下,我仍然建议按类别对项目进行排序,但在使用新类别时也要添加标题。你能显示一个结果应该是什么的HTML模型文件吗?当然。感谢帮助:嗨,Jorel,排序是不够的,因为我需要对它们进行分类:例如,标题苹果和下面的两个苹果。所以我需要一种方法按类别筛选数据。已编辑:现在将检查下一个出现的类别是否与当前类别相同。需要首先对数组进行排序。这是一个很好的解决方案。非常感谢。感谢所有花时间回答的人。非常感谢。
object.sort(function(a, b) {
return a.category > b.category;
});
[ { category: 'Apple', color: 'green' },
{ category: 'Apple', color: 'green' },
{ category: 'Orange', color: 'Orange' } ]