此问题涉及我的算法以及它为什么不起作用。更具体地说,我想知道如何改进以做我想做的事情。这就是为什么它与建议的重复问题不同。基于属性值对对象数组排序(int)
我想创建一个函数,它基于属性值(int),他们都共同共享,“indexFound”分类对象的数组。正如你可能会怀疑的那样,我试图在数组的开头放置一个indexFound值较低的元素。
function organizeTokens(list) {
for (i = 0; i < list.length - 1; i++) {
if (list[i].indexFound < list[i + 1].indexFound) {
// do nothing
} else if (list[i].indexFound > list[i + 1].indexFound) {
var tempVal = list[i];
list[i] = list[i + 1];
list[i + 1] = tempVal;
} else {
// should not happen unless we are comparing the same token
}
}
};
既然这样,当我给它的对象数组这个代码不进行任何差别。这些元素仍然没有按照他们应该的顺序排列。我以正确的方式接近这个吗?我错过了明显的东西吗?
编辑:-------------------------------------------- -----------------------
示例输入:organizTokens([{value:“if”,indexFound:7},{value:“a ”,indexFound:0}])
预期输出:[{值: “一个”,indexFound:0},{值: “如果”,indexFound:7}]
实际输出:[{值:“if”,indexFound:7},{value:“a”,indexFound:0}]
你试过'Array.prototype.sort'吗?或者你想自己算法解决这个问题? –
我没有。我现在检查文档。我正在寻找最高效,最理想的最简单的方法 - 因为它只是我正在构建的Lexer的巨型机器中的一个小型齿轮。 – Streamer
你能发表一个数据输入的例子,预期的输出和你真的得到的输出吗? – zer00ne