gpt4 book ai didi

Javascript 对字符串数组的重要性进行排序

转载 作者:行者123 更新时间:2023-11-30 14:57:09 25 4
gpt4 key购买 nike

我有一个字符串数组,其中包含服务器检索到的数据。我想根据元素的重要性对该数组进行排序。

这是我的代码:

 // once the server is called, save the information by changing the order
let formattedData: Array<string> = this.$scope.sortResult(data_response, true);

// This is the function that should sort the data
public sortActions = (arrayToSort: Array<string>, firstList: boolean) => {
if (!arrayToSort || !arrayToSort.length) {
return;
}

let result: Array<string> = [];
let j: any = null;

let listOfImportance: any = null;
if(firstList){
listOfImportance = ["Smith", "El", "John", "Karl", "Peter"];
} else {
listOfImportance = ["John", "Peter", "Karl", "El", "Smith"];
}

for (let i = 0, orderLength = listOfImportance.length; i < orderLength; i++) {
let currentOrder = listOfImportance[i];
while (-1 != (j = $.inArray(currentOrder, arrayToSort))) {
result.push(arrayToSort.splice(j, 1)[0]);
}
return result.concat(arrayToSort);
}
}

问题是,如果 data_response(服务器的结果)是,例如,["Peter", "John"] sortActions 的结果(data_response, true)["Peter", "John"],那么它没有正确排序。事实上,预期的结果将是:["John", "Peter"]

也许问题是服务器响应不包含重要性列表中的所有项目?

最佳答案

我觉得你的问题是线路

     return result.concat(arrayToSort);

这应该在 for 函数的最后一行之外,以便仅在所有可以排序的内容都排序后才添加剩余的项目。

但是,我建议您不要重新发明轮子,而是使用该语言的默认排序功能。首先,使用优先级函数映射元素,如下所示:

return array.sort((a, b) => priority(a) - priority(b));

优先级函数是一个将元素映射到它的优先级(整数)的函数,例如,

const priority = el => listOfImportance.indexOf(el);

会按照数组中指定的顺序进行排序;第一个元素的优先级为 0,结果中第一个元素的优先级为 1,第二个元素的优先级为 1,依此类推。

关于Javascript 对字符串数组的重要性进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47074211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com