javascript - 对动态填充的对象数组进行排序

标签 javascript arrays sorting

我有一个像这样初始化的数组 var GenerationObject = [{string:"", Score: 0}];

然后我动态填充:

for(var i = 0; i < amount_offspring; i++)
{
    // "load" text into array and send the string to see if it evolves
    generationObject[i].string = evolve(start_text, characters, mutation_rate);
    // then score the string
    generationObject[i].score = score(target_text, generationObject.string);
}

然后我想按分数对这个数组进行排序。我不知道最好的方法是在 for 循环中对其进行排序,或者之后对整个数组进行排序。

然后,我将获取得分最高的对象的字符串,并将其再次递归地传递给函数。

那么执行此排序功能的好方法是什么?我在这里看到一些人使用这个

generationObject.sort(function(a, b) {
    return (a.score) - (b.score);
});

但我不确定 .sort 是否仍然受支持?但这似乎对我不起作用。

最佳答案

GenerationObject 是一个数组,而不是一个对象,因此 score(target_text, GenerationObject.string); 可能是问题所在,因为 .string 将是未定义的。 (您是指 GenerationObject[i].string 吗?) 尝试像这样构建数组:

var generationObject = []
for(var i = 0; i < amount_offspring; i++)
{
    evolved_string = evolve(start_text, characters, mutation_rate)
    generationObject.push({
       string: evolved_string,
       score: score(target_text, evolved_string)
    })
}

然后 Array.prototype.sort 应该可以解决问题。

关于javascript - 对动态填充的对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35997506/

相关文章:

javascript - 如何根据表格是否有行动态隐藏按钮

C - 为什么指向指针的指针与指向数组的指针不同?

php - 如何使用 PHP 在 MySql 中识别具有所有唯一字段值的行?

Javascript - 基于 _id 的排序数组对 Javascript 对象进行排序的更快、更有效的方法?

linux - 如何在同一个输入中执行多个命令

javascript - 将小数点限制在特定情况下(不是四舍五入)

javascript - 如何强制执行将运行所有调整大小功能的调整大小事件

javascript - 如何解决无法在家中重现的客户端Javascript错误?

python - 如何在不循环的情况下顺序更新 Numpy 数组

Angular 2 Material 实现排序、过滤和分页