Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/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 AA = ["~/80/Blue/1.png","~/80/Blue/2.png","~/80/Black/1.png","~/80/Black/2.png"]; var BB = ["~/81/Blue/1.png","~/81/Blue/2.png","~/81/Black/1.png","~/81/Black/2.png"]; 我需要对这些数组进行.concat,并按如下方式进行排序: CC = ["~/80/Blue/1.png","~/81/

我有两个包含字符串数据的数组:

var AA = ["~/80/Blue/1.png","~/80/Blue/2.png","~/80/Black/1.png","~/80/Black/2.png"];
var BB = ["~/81/Blue/1.png","~/81/Blue/2.png","~/81/Black/1.png","~/81/Black/2.png"];
我需要对这些数组进行.concat,并按如下方式进行排序:

 CC = ["~/80/Blue/1.png","~/81/Blue/1.png","~/80/Blue/2.png","~/81/Blue/2.png","~/80/Black/1.png","~/81/Black/1.png","~/80/Black/2.png","~/81/Black/2.png"];
排序标准是,我需要具有相同“颜色目录”和相同文件名的数组元素对

我试过这个:

var CC = AA.concat(BB);
CC.sort (function(a,b) {
    var Mask = /\W\w+\W\d\Wpng/;
    var A =[];
    var B = [];
    var s1 = a.toLowerCase();
    var s2 = b.toLowerCase();
    for (var i=0; i<s1.length; i++){
      A.push(s1[i].match(Mask));
    }
    for (var i=0; i<s2.length; i++){
      B.push(s2[i].match(Mask));
    }
    for (var i=0; i<A.length; i++){
      for (var j=0; j<B.length; j++){
        if (A[i] < B[j]) {return -1;};
        if (A[i] > B[j]) {return 1;};
        else {return 0;}
        }
    }
var CC=AA.concat(BB);
CC.sort(函数(a,b){
变量掩码=/\W\W+\W\d\Wpng/;
var A=[];
var B=[];
var s1=a.toLowerCase();
var s2=b.toLowerCase();
对于(var i=0;i
var AA=[“~/80/Blue/1.png”、“~/80/Blue/2.png”、“~/80/Black/1.png”、“~/80/Black/2.png”];
var BB=[“~/81/Blue/1.png”、“~/81/Blue/2.png”、“~/81/Black/1.png”、“~/81/Black/2.png”];
var CC=[];
var longestArr=0;
如果(AA.长度>BB.长度){
longestArr=AA.长度;
}否则{
longestArr=BB.长度;
}
对于(变量i=0;i
这就是您想要的吗?

以下是如何压缩两个长度相等的数组

var CC = AA.reduce(function(result, value, i) {
    return result.concat(value, BB[i]);
}, []);
jsiddle演示:

下面介绍如何根据目录名和文件名将等长数组排序为字符串,然后将其压缩

AA.sort(comparator);
BB.sort(comparator);

var CC = AA.reduce(function(result, value, i) {
    return result.concat(value, BB[i]);
}, []);

function comparator(a, b) {
  var A = a.split('/').splice(2).join('/');
  var B = b.split('/').splice(2).join('/');

  if (A > B) {
    return 1;
  } else if (A < B) {
    return -1;
  } else {
    return 0;
  }
}
AA.排序(比较器);
BB.排序(比较器);
var CC=AA.reduce(函数(结果、值、i){
返回结果concat(值,BB[i]);
}, []);
函数比较器(a,b){
var A=A.split('/')。splice(2)。join('/');
var B=B.split('/')。splice(2)。join('/');
如果(A>B){
返回1;
}否则如果(A

jsiddle演示:

首先连接两个数组,然后使用arrays.sort方法进行排序,将所需的排序逻辑作为sortFunction参数传递

var AA = ["~/80/Blue/1.png","~/80/Blue/2.png","~/80/Black/1.png","~/80/Black/2.png"];
var BB = ["~/81/Blue/1.png","~/81/Blue/2.png","~/81/Black/1.png","~/81/Black/2.png"];
var CC = [];


var CC = AA.concat(BB);

function string_split_comparator(a, b) {
   var A_colorFile = a.split('/').splice(2).join('/'); /* Blue/1.png */                
   var B_colorFile = b.split('/').splice(2).join('/');
   var A_directoryNum = a.split('/')[1]; /* 80 */
   var B_directoryNum = b.split('/')[1];
   if(A_colorFile !== B_colorFile){
      return A_colorFile < B_colorFile;
   } else{
      return A_directoryNum < B_directoryNum 
   }

}
CC.sort(string_split_comparator);
var AA=[“~/80/Blue/1.png”、“~/80/Blue/2.png”、“~/80/Black/1.png”、“~/80/Black/2.png”];
var BB=[“~/81/Blue/1.png”、“~/81/Blue/2.png”、“~/81/Black/1.png”、“~/81/Black/2.png”];
var CC=[];
var CC=AA.concat(BB);
函数字符串分割比较器(a,b){
var A_colorFile=A.split('/')。splice(2)。join('/');/*Blue/1.png*/
var B_colorFile=B.split('/').splice(2).join('/');
var A_directoryNum=A.split('/')[1];/*80*/
var B_directoryNum=B.split('/')[1];
if(A_colorFile!==B_colorFile){
返回A_colorFile
您尝试了什么?请访问帮助中心,获取关于提问的建议。请编辑并添加到您的问题本身,以便用户可以阅读。排序的标准是什么?我需要一对一对的数组元素,具有相同的“颜色目录”和相同的文件名。你可以看到它应该是什么。我不认为这是“排序”--这是“交错”,对吗?这会在结尾留下一些未定义的。A和B是未定义的。@Vlad:你提到的颜色是按字母顺序倒序排列的。这是故意的吗?我的意思是,你需要在“黑色”之后加上“蓝色”还是它的反面?@Vlad:很好。很高兴我能帮忙:)
var AA = ["~/80/Blue/1.png","~/80/Blue/2.png","~/80/Black/1.png","~/80/Black/2.png"];
var BB = ["~/81/Blue/1.png","~/81/Blue/2.png","~/81/Black/1.png","~/81/Black/2.png"];
var CC = [];


var CC = AA.concat(BB);

function string_split_comparator(a, b) {
   var A_colorFile = a.split('/').splice(2).join('/'); /* Blue/1.png */                
   var B_colorFile = b.split('/').splice(2).join('/');
   var A_directoryNum = a.split('/')[1]; /* 80 */
   var B_directoryNum = b.split('/')[1];
   if(A_colorFile !== B_colorFile){
      return A_colorFile < B_colorFile;
   } else{
      return A_directoryNum < B_directoryNum 
   }

}
CC.sort(string_split_comparator);