Javascript自定义数组按数组排序
Javascript custom array sort by array
我现在有这个函数,它按字母顺序对数组进行排序。
function compare(a,b) {
if (a.subtitle < b.subtitle)
return -1;
if (a.subtitle > b.subtitle)
return 1;
return 0;
}
我需要一个类似的函数,用另一个数组对数组进行排序。我试着自己写,但我无法理解,所以我一无所获。
示例:
我需要对array1进行排序,这取决于该项在array2中的位置。
Array1 = ['quick','fox','the','brown'];
Array2 = ['the','quick','brown','fox'];
可能有一个简单的答案我看不到。
编辑:
此外,数组1中不在数组2中的任何项目都可以不按特定顺序或按字母顺序固定在末尾,只要更容易。
试试这个:
function compare(a,b, compareArray) {
if ((compareArray.indexOf(a) != -1 && compareArray.indexOf(a) < compareArray.indexOf(b))
|| compareArray.indexOf(b) == -1)
return -1;
if ((compareArray.indexOf(a) > compareArray.indexOf(b))
|| compareArray.indexOf(a) == -1)
return 1;
return 0;
}
http://jsfiddle.net/AMSDE/
var Array1 = ['quick', 'fox', 'the', 'brown', 'abc']; //the array to be sorted
var Array2 = ['the', 'quick', 'brown', 'fox'];
var sortedAry = [];
for (var i = 0; i < Array2.length; i++) {
var index = Array1.indexOf(Array2[i]);
if (index !== -1) {
console.log(index);
sortedAry.push(Array2[i]);
Array1.splice(index, 1);
}
}
for (var j = 0; j < Array1.length; j++) {
sortedAry.push(Array1[j]);
}
console.log(sortedAry);
我今天遇到了做同样事情的需要,这就是我的解决方案:
var arr = [".", 5359, 1, 2, 3, 4, 6, 9, 15];
var priorities = [3, '.', 1, 4, 15, 9, 2, 6];
var resultArr = arr.filter( function(arrElement) { return priorities.indexOf(arrElement) >= 0 })
.sort( function (a,b) { return priorities.indexOf(a) - priorities.indexOf(b) })
.concat( arr.filter( function(arrElement) { return priorities.indexOf(arrElement) < 0})
);
console.log(resultArr.join(""));
控制台:3.14159265359
jsfiddle基于@rps的答案
基本上,它会挑选出我们有优先顺序的元素,对它们进行排序,然后添加我们没有优先顺序的元件。作为一个额外的好处(至少对于我的用例),排序对arr
的顺序是无损的。
我不确定这是好是坏,但我知道我讨厌for
循环。:)
相关文章:
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 根据Javascript中的字符串值对数组的数组进行排序
- Javascript中的多维数组排序索引问题
- 按每个数组中的一个值对一组关联数组进行排序
- 可以't在对另一个数组排序后访问任何数组
- 如何按日期对Javascript对象数组排序
- 数组排序后显示更改
- 当许多元素相等时,Javascript数组排序无法正常工作
- Javascript数组排序速度受字符串长度的影响
- 按唯一键将对象数组排序为数组
- 以 js 为单位的数组排序
- 数字数组排序错误
- js 数组排序无法正常工作
- 数组排序.论点从何而来
- 不需要的数组排序
- 数组排序不正确/不可预测,使用 indexOf 时
- Javascript将数组排序到树中
- 随后的多维数组排序会产生意外的结果
- 数组排序基于纯javascript搜索文本匹配
- 根据字符串将数组排序为数组new