r.r*_*r.r 1 javascript arrays sorting jquery group-by
我有一个包含12个条目的数组.我喜欢用标题对它们进行排序.许多文章都有相同的标题,我可以很容易,因为标题是相同的.最后我可能是3或4组.
我有非常小的JavaScript代码,因为我不知道我是否想用循环或其他方式.
使用Javascript
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
}
Run Code Online (Sandbox Code Playgroud)

不确定我是否理解“按组排序数组”的意思。假设您想按标题对数组进行排序;然后你会得到类似的东西:
\n\ncontentarticles.sort(function(a, b) {\n if (a.title > b.title) return 1;\n if (a.title < b.title) return -1;\n return 0;\n });\nRun Code Online (Sandbox Code Playgroud)\n\n但如果这不是你想要的结果,你能说得更明确一些吗?您到底想做什么来过滤掉重复项?创建“数组的数组”?或者是什么?
\n\n如果你想分组而不是排序:
\n\nvar articles = contentarticles.reduce(function(articles, article) {\n (articles[article.title] || (articles[article.title] = [])).push(article);\n return articles;\n}, {});\nRun Code Online (Sandbox Code Playgroud)\n\n通过这种方式,您将拥有一个对象,其中属性本身就是标题,每个属性将包含一个包含完整文章对象的数组。所以,一旦你有了标题,你就可以获得所有具有相同标题的文章。如果你想要所有标题的列表,你可以使用Object.keys;如果你想迭代,你可以使用for\xe2\x80\xa6in。
\n\n这里是我使用的reduce方法。
\n小智 5
如果我理解正确你想要的是挑选每个对象并按标题分组.如果我是你,我会看看UnderScore js.这是一个很好的js实用程序集合.
var grouped = _.groupBy(yourObjects, 'title');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3085 次 |
| 最近记录: |