JavaScript中的趋势主题算法
假设我有这样一个数组:JavaScript中的趋势主题算法,javascript,algorithm,Javascript,Algorithm,假设我有这样一个数组: var object = [ {name: "christmas", mentions: 56, last_mention: 12}, {name: "paris", mentions: 92, last_mention: 13}, {name: "halloween", mentions: 64, last_mention: 34}, {name:"easter", mentions: 124, last_mention: 213} ]
var object = [
{name: "christmas", mentions: 56, last_mention: 12},
{name: "paris", mentions: 92, last_mention: 13},
{name: "halloween", mentions: 64, last_mention: 34},
{name:"easter", mentions: 124, last_mention: 213}
]
其中,last\u notice
是最后一次提及的天数
我想对对象进行排序,以便首先显示趋势。例如,巴黎的故事现在正在流行,所以它应该在榜首,尽管它不是最新的。复活节应该排在最后,因为这是老消息。是否有JavaScript中的算法可以用于此
我的最终解决方案
var a = 4;
var b = 1;
object.sort(function(c, n){
return (a * c.last_mention + b * c.mentions) > (a * n.last_mention + b * n.mentions);
});
感谢聊天中的@crl。您可以使用自己的排序方法
function last_mention(a,b){
return a.last_mention - b.last_mention;
}
function mentions(a,b){
if(a.mentions === b.mentions)
return a.last_mention - b.last_mention;
return false;
}
var trendings= [
{name: "christmas", mentions: 56, last_mention: 12},
{name: "paris", mentions: 92, last_mention: 13},
{name: "halloween", mentions: 64, last_mention: 34},
{name:"easter", mentions: 124, last_mention: 213}
];
trendings.sort(last_mention);
trendings.sort(mentions);
你可以测试一下你的表现
console.log(trendings);
没有算法可以。@Jongware:那不再是真的了。从ES2015(又称ES6)开始,对象属性具有顺序。当然,要对对象的属性进行排序,您必须创建一个新对象(感谢IE)。不过,这并不是正确的解决方案。:-)啊-一个抽象的
对象
(作为“任意信息的容器”)的基础之一已经被大众的需求破坏了。。。不过,到目前为止,最简单的方法是将所有数据都放入数组中,因为这是存储这组数据的一种更符合逻辑的方法。@Jongware:它的主要用途实际上是一致的序列化顺序。(人们一直认为他们有秩序,引擎提供秩序,但前后不一致,导致人们陷入陷阱。)这不是你想用于此类任务的东西。“我想订购对象”。我认为OP意味着根据一些标准对名为“object”的数组进行排序,在这种情况下,我建议阅读以下内容。