Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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_Arrays_Sorting - Fatal编程技术网

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

Javascript 对动态填充的对象数组进行排序,javascript,arrays,sorting,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, muta

我有一个数组,它是这样初始化的
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);
}

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

generationObject是一个数组,而不是一个对象,所以
评分(target_text,generationObject.string)可能是问题所在,因为.string将未定义。(您的意思是
生成对象[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)
    })
}
var-generationObject=[]
对于(变量i=0;i

然后Array.prototype.sort就可以了。

generationObject是一个数组,而不是一个对象,所以
评分(target\u text,generationObject.string)可能是问题所在,因为.string将未定义。(您的意思是
生成对象[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)
    })
}
var-generationObject=[]
对于(变量i=0;i

然后Array.prototype.sort就可以了。

您应该在
for
循环之外编写排序逻辑,因为如果将它放进去,对象数组将被排序
N次,其中
N
是循环的迭代。以下是两种方法-

  • 通过使用函数-来澄清您的问题,
    sort()
    仍然在几乎所有浏览器中受支持。如果您仍然担心浏览器的兼容性,可以检查以查看支持的浏览器列表

    generationObject = generationObject.sort(function(a, b) {
        return parseInt(a.score) - parseInt(b.score);
    });
    
  • 通过使用- 在下划线中,可以利用该函数
  • 返回列表的一个(稳定的)排序副本,按照通过iteratee运行每个值的结果按升序排列。iteratee也可以是要排序的属性的字符串名称(例如,length)

    您可以简单地在下划线中执行此操作-

        generationObject = _.sortBy(generationObj, 'score');
    

    您应该在
    for
    循环外部编写排序逻辑,因为如果将其放入内部,对象数组将被排序
    N
    次,其中
    N
    是循环的迭代次数。以下是两种方法-

  • 通过使用函数-来澄清您的问题,
    sort()
    仍然在几乎所有浏览器中受支持。如果您仍然担心浏览器的兼容性,可以检查以查看支持的浏览器列表

    generationObject = generationObject.sort(function(a, b) {
        return parseInt(a.score) - parseInt(b.score);
    });
    
  • 通过使用- 在下划线中,可以利用该函数
  • 返回列表的一个(稳定的)排序副本,按照通过iteratee运行每个值的结果按升序排列。iteratee也可以是要排序的属性的字符串名称(例如,length)

    您可以简单地在下划线中执行此操作-

        generationObject = _.sortBy(generationObj, 'score');
    

    如果课程得到支持的话。显示相关代码并询问所有主要浏览器都支持的特定问题,而不是绕着问题转。@Thriggle您是对的,当我注意到您的评论时,我正在编辑我的评论。哎呀!把我的语言搞混了。谢谢您的更正。@FelixRosén,请看如何对一组对象进行排序。这有帮助吗?如果课程得到支持的话。显示相关代码并询问所有主要浏览器都支持的特定问题,而不是绕着问题转。@Thriggle您是对的,当我注意到您的评论时,我正在编辑我的评论。哎呀!把我的语言搞混了。谢谢您的更正。@FelixRosén,请看如何对一组对象进行排序。那有用吗?谢谢!尽管
    generationObject[i]
    ?不!您从一个空数组开始,然后使用附加到数组的
    .push
    迭代地构建它。您希望
    generationObject[i]
    成为
    {string:,score:}形式的对象
    ,但在填充数组之前它将是未定义的。谢谢!您不必这样做,尽管
    生成对象[i].push({..
    ?不!您从一个空数组开始,然后使用附加到数组的
    .push
    迭代构建它。您希望
    生成对象[i]
    成为
    {string:,score:}形式的对象
    ,但在填充数组之前,它将是未定义的。