Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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
如何使用match重新排列JavaScript数组?_Javascript_Jquery_Arrays_String - Fatal编程技术网

如何使用match重新排列JavaScript数组?

如何使用match重新排列JavaScript数组?,javascript,jquery,arrays,string,Javascript,Jquery,Arrays,String,假设我们有JavaScript数组arr,其中每个arr[i]包含一个句子。现在,如果我们想搜索包含特定字符串的句子,我们可以使用match来查找这些句子 var newarr = []; for(var i = 0; i < arr.length; i++) { if(arr[i].toLowerCase().match(str.toLowerCase()){ newarr[newarr.length] = arr[i];

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

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

新数组<代码> NeWrr <代码>将只包含包含字符串<代码> STR 的语句。现在,是否有一种方法重新排列<代码> NeWrr <代码>,使包含“代码>STR</代码>”的句子先开始,然后包含“<代码> STR >中间的那些,然后包含<代码> STR < /代码>的那些?

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

  • 如果返回的号码是
    0
    ,则
    b
    位于
    a

  • 如果返回的编号为
    0
    ,则
    a
    b
    按顺序“相同”
因此,要根据子字符串
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"]

您忘记了if条件中的一个括号

检查以下代码:

var arr = ["JS is fun", "JS Rocks", "JS is for techies"];
var newarr = [];
var str = "fun";
for(var i = 0; i < arr.length; i++) {
if(arr[i].toLowerCase().match(str.toLowerCase())){       
newarr[newarr.length] = arr[i];             
}
}
   alert(newarr);
var-arr=[“JS很有趣”,“JS摇滚”,“JS适合技术人员”];
var newarr=[];
var str=“乐趣”;
对于(变量i=0;i
a
b
是要比较的数组元素。排序时是否有方法使用
trim()
修剪每个数组元素?关于
abbb
abbbb
等,应该如何处理arranged@user3741635“修剪”是什么意思如果你愿意,你可以做一些事情
newarr=arr.map(函数(elt){return elt.trim();})
。它们都以
a
开头,但长度不同。
indexOf
将返回0表示所有。根据我的说法,在对元素排序时也应考虑长度。将来,您可以编辑问题来解决类似这样的小问题。