我有一个像这样初始化的数组 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/