我正在编写一个脚本,我必须根据内部数组的第二个元素对数组进行排序。例如,我在下面提到了数组:
var newInv = [
[2, "Hair Pin"],
[3, "Half-Eaten Apple"],
[67, "Bowling Ball"],
[7, "Toothpaste"]
];
我想根据内部数组中的所有字符串值对此数组进行排序。所以结果应该是:
var result = [
[67, "Bowling Ball"],
[2, "Hair Pin"],
[3, "Half-Eaten Apple"],
[7, "Toothpaste"]
];
为此,我写了以下脚本: 有没有其他方法可以做同样的事情?可能没有创建对象?
function arraySort(arr) {
var jsonObj = {};
var values = [];
var result = [];
for (var i = 0; i < arr.length; i++) {
jsonObj[arr[i][1]] = arr[i][0];
}
values = Object.keys(jsonObj).sort();
for (var j = 0; j < values.length; j++) {
result.push([jsonObj[values[j]], values[j]]);
}
return result;
}
var newInv = [
[2, "Hair Pin"],
[3, "Half-Eaten Apple"],
[67, "Bowling Ball"],
[7, "Toothpaste"]
];
console.log(arraySort(newInv));
&#13;
答案 0 :(得分:4)
您可以使用Array#sort
sort()
方法对数组的元素进行排序并返回数组。排序不一定是stable。默认排序顺序是根据字符串Unicode代码点。
localeCompare()
方法返回一个数字,指示引用字符串是在排序顺序之前还是之后或与给定字符串相同。
var newInv = [[2, "Hair Pin"], [3, "Half-Eaten Apple"], [67, "Bowling Ball"], [7, "Toothpaste"]];
newInv.sort(function (a, b) {
return a[1].localeCompare(b[1]);
});
console.log(newInv);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:3)
当然,像这样,使用cnn.Query<ModelClass>("SPGetData",
new { StartDate=startDate??null, EndDate=endDate??null},
commandType:CommandType.StoredProcedure).ToList()
的{{3}}方法:
Array
这是一个片段:
newInv.sort((a, b) => a[1].localeCompare(b[1]));
答案 2 :(得分:0)
sort outer array based on values in inner array, javascript的重复 在这里你会找到几个答案,比如我自己的
var arr = [.....]
arr.sort((function(index){
return function(a, b){
return (a[index] === b[index] ? 0 : (a[index] < b[index] ? -1 : 1));
};
})(2)); // 2 is the index
对索引2进行排序