如何使用javascript按组对数组排序?
我有一个包含12个条目的数组。我喜欢按标题分类。许多文章都有相同的标题,我可能很容易,因为标题是相同的。 最后我可能是3到4组 我有非常小的javascript代码,因为我不知道我是想用循环还是其他方法来实现它 Javascript如何使用javascript按组对数组排序?,javascript,jquery,arrays,sorting,group-by,Javascript,Jquery,Arrays,Sorting,Group By,我有一个包含12个条目的数组。我喜欢按标题分类。许多文章都有相同的标题,我可能很容易,因为标题是相同的。 最后我可能是3到4组 我有非常小的javascript代码,因为我不知道我是想用循环还是其他方法来实现它 Javascript var totalGroups = []; var actualGroup = []; var contentarticles = articles.contentarticles, article,
var totalGroups = [];
var actualGroup = [];
var contentarticles = articles.contentarticles,
article,
$out = $("#articlesOutput");
for (var i = 0; i < contentarticles.length; i++) {
if (!article || article.title != contentarticles[i].title) {
article = contentarticles[i];
document.getElementById('articleForNaviTopTitle').innerHTML = article.title;
document.getElementById('articleForNaviTopID').innerHTML = article.id;
var articlesOutput = [
'<li><a href="./certifiedTraining/id=', article.id, '/step=', i + 1, '">',
article.title,
'</li>'
].join("");
$out.append(articlesOutput);
}
}
// till this point all works fine, and a code above gives results in the image below.
//**Im struggeling right there, how to sort this array by groups?????**
while (article.title(this) == article.title(next))
{
code block to be executed
}
var totalGroups=[];
var-actualGroup=[];
var contentarticles=articles.contentarticles,
文章
$out=$(“#articlesOutput”);
for(var i=0;i”,
第1条标题,
“”
].加入(“”);
$out.append(articlesOutput);
}
}
//直到这一点,所有的工作都很好,上面的代码在下图中给出了结果。
//**我正在苦苦思索,如何按组对数组排序**
while(article.title(this)=article.title(next))
{
要执行的代码块
}
我不确定我是否理解你所说的“按组排序数组”的意思。假设您希望按标题对数组进行排序;然后你会有这样的结果:
contentarticles.sort(function(a, b) {
if (a.title > b.title) return 1;
if (a.title < b.title) return -1;
return 0;
});
通过这种方式,您将拥有一个对象,其中属性是其自身的标题,每个属性将包含一个包含完整文章对象的数组。因此,一旦你有了标题,你就可以获得所有标题相同的文章。如果您想要所有标题的列表,可以使用;如果要迭代,可以使用
这里是我使用的方法。我不确定我是否理解你所说的“按组排序数组”的意思。假设您希望按标题对数组进行排序;然后你会有这样的结果:
contentarticles.sort(function(a, b) {
if (a.title > b.title) return 1;
if (a.title < b.title) return -1;
return 0;
});
通过这种方式,您将拥有一个对象,其中属性是其自身的标题,每个属性将包含一个包含完整文章对象的数组。因此,一旦你有了标题,你就可以获得所有标题相同的文章。如果您想要所有标题的列表,可以使用;如果要迭代,可以使用
这里是我使用的方法。如果我理解正确,你想要的是挑出每个对象并按标题分组排序。如果我是你,我会看一眼。这是一个很好的js实用程序集合
var grouped = _.groupBy(yourObjects, 'title');
如果我理解正确的话,你想要的是挑选出每一个对象并按标题分组排序。如果我是你,我会看一眼。这是一个很好的js实用程序集合
var grouped = _.groupBy(yourObjects, 'title');
是否要对进行排序,或将其聚合到存储桶中?另外,您似乎遇到了一些非ASCII字符的编码问题。它只是一个数组列表0到11。但我想把它分组分类。同一组中应包含标题相同的文章。也许我应该使用对象而不是数组?在计算机编程中,“排序”通常意味着“排序”。听起来你的意思是“收集”。顺便说一句,帖子中的图片很烦人,因为我们无法将它们剪切并粘贴到Javascript控制台中。请发布Javascript文本,显示您拥有的内容和您试图获取的内容。您想
排序,还是聚合到bucket中?另外,您似乎遇到了一些非ASCII字符的编码问题。它只是一个数组列表0到11。但我想把它分组分类。同一组中应包含标题相同的文章。也许我应该使用对象而不是数组?在计算机编程中,“排序”通常意味着“排序”。听起来你的意思是“收集”。顺便说一句,帖子中的图片很烦人,因为我们无法将它们剪切并粘贴到Javascript控制台中。请发布Javascript文本,显示您所拥有的以及您试图获取的内容。请查看右侧的图像。它只是一个数组列表0到11。但我想把它分组分类。同一组中应包含标题相同的文章。也许我应该使用对象而不是数组?在我的数组中应该至少有3个这样的组,它们的标题是相同的。很清楚你现在拥有什么,但不清楚你想要获得什么结构。我会尝试在答案中做一些例子,但你必须更明确一点。好的代码——我从来没有想过使用reduce
为此,我总是用if
的显式循环来编写这种东西。好的,我会测试它是如何工作的,我现在就给你!我想我使用了错误的术语“排序”,我只需要说“排序”,注意,在这种情况下不是“排序”,至少对我来说是这样。它只是在同一组下“收集”具有相同属性的项。所以这更像是“分组”。但如果这是你所期望的,请告诉我。注意,我更新了代码,因为有一个错误。请看右边的图片。它只是一个数组列表0到11。但我想把它分组分类。同一组中应包含标题相同的文章。也许我应该使用对象而不是数组?在我的数组中应该至少有3个这样的组,它们的标题是相同的。很清楚你现在拥有什么,但不清楚你想要获得什么结构。我会尝试在答案中做一些例子,但你必须更明确一点。好的代码——我从来没有想过使用reduce
为此,我总是用if
的显式循环来编写这种东西。好的,我会测试它是如何工作的,我现在就给你!我想我使用了错误的术语“排序”,我只需要说“排序”,注意,在这种情况下不是“排序”,至少对我来说是这样。只是“收集”