Javascript 对包含数字和字符串的二维数组进行排序

Javascript 对包含数字和字符串的二维数组进行排序,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我有一个清单如下所示 var arr1 = [ [21, "Bowling Ball"], [2, "Dirty Sock"], [1, "Hair Pin"], [5, "Microphone"] ]; 我想按字母顺序把存货分类。我试着用一种简单的冒泡排序技术来做这件事。但它显示了一个错误——“wrappedCompareFn不是一个函数” 函数排序(arr1){ //控制台日志(“工作”); 对于(var i=0;i您可以将内置方法与自定义回调一起使用 so

我有一个清单如下所示

var arr1 = [
    [21, "Bowling Ball"],
    [2, "Dirty Sock"],
    [1, "Hair Pin"],
    [5, "Microphone"]
];
我想按字母顺序把存货分类。我试着用一种简单的冒泡排序技术来做这件事。但它显示了一个错误——“wrappedCompareFn不是一个函数”

函数排序(arr1){
//控制台日志(“工作”);

对于(var i=0;i您可以将内置方法与自定义回调一起使用

sort()
方法对数组中的元素进行适当排序并返回数组。排序不一定是必需的。默认排序顺序根据字符串Unicode代码点

var arr1=[[1,“发夹”]、[21,“保龄球”]、[2,“脏袜子”]、[5,“麦克风”];
arr1.排序(函数(a,b){
返回a[1]。localeCompare(b[1]);
});

document.write(“”+JSON.stringify(arr1,0,4)+“”);
这不是冒泡排序。内部循环的初始值应为:
for(var j=i+1;…
可能的替代方案:您不清楚,您想按第一列或第二列对其进行排序..有几个疑问…这里的a和b是什么。数组的两个元素是否按顺序排列?a和b是外部数组的元素,例如,它将
[21,“保龄球”]
[2,“脏袜子”]
。对于结果,您需要使用索引访问内部数组的第二个元素。
function sort(arr1){    
//console.log("works");
for(var i=0;i<arr1.length;i++){      
  for(var j=0;j<arr1.length;j++){     
   // console.log(arr1[j][1].localeCompare(arr1[i][1]));
    if(arr1[j][1].localeCompare(arr1[i][1])<0){          
      var tmp=arr1[i][1];
      arr1[i][1]=arr1[j][1];
      arr1[j][1]=tmp;          
       }          
    }      
  }        
return arr1;
}