Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的趋势主题算法_Javascript_Algorithm - Fatal编程技术网

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”的数组进行排序,在这种情况下,我建议阅读以下内容。