gpt4 book ai didi

javascript - 如何使用匹配重新排列 JavaScript 数组?

转载 作者:行者123 更新时间:2023-11-30 00:23:53 26 4
gpt4 key购买 nike

假设我们有一个 JavaScript 数组 arr,其中每个 arr[i] 都包含一个句子。现在如果我们想搜索包含特定字符串 str 的句子,我们可以使用 match 来找到这些句子,使用

var newarr = [];                
for(var i = 0; i < arr.length; i++) {
if(arr[i].toLowerCase().match(str.toLowerCase()){
newarr[newarr.length] = arr[i];
}
}

新数组 newarr 将只包含包含字符串 str 的句子。现在,有没有办法重新排列 newarr 使得开头包含 str 的句子排在第一位,然后是中间包含 str 的句子那么最后包含str的呢?

最佳答案

sort Arrays 上可用的方法可以采用自定义函数来比较元素并根据该函数进行排序。您的自定义排序函数需要采用两个参数,ab ,并返回一个数字; ab是正在比较的数组元素。您的函数返回的数字告诉 sort功能是否ab根据以下规则,应该排在第一位:

  • 如果返回的数字是<0 , 然后 ab 之前
  • 如果返回的数字是>0 , 然后 ba 之前
  • 如果返回的数字是0 , 然后 ab按顺序“相同”

因此,根据子字符串 str 的位置对字符串数组进行排序出现,那么你可以这样做:

var arr = ['bbbab', 'bbabbb', 'abbb', 'bbbba'];

// Our substring.
var str = 'a';
// Make copy of array.
var newarr = arr.slice()
// Sort.
newarr.sort(function (a, b) {
return a.indexOf(str) - b.indexOf(str);
});
console.log(newarr); // => ["abbb", "bbabbb", "bbbab", "bbbba"]

关于javascript - 如何使用匹配重新排列 JavaScript 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32162612/

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