我有一个可以由以下任何值组成的数组:
input = ['S-1','S-2','S-3','S-4','S-5','S-6','S-7','S-8'];
'输入'可以由任何#这些值组成,没有任何重复。我试图找出如何排序&输入'按照排序'
的顺序排列sortingArray = ["S-1", "S-5", "S-2", "S-6", "S-3", "S-7", "S-4", "S-8"];
非常感谢任何帮助。
答案 0 :(得分:3)
您还可以使用过滤功能并获取sortingArray的副本,其中仅包含来自输入的值:
var input = ['S-1','S-2','S-3','S-4','S-5'];
var sortingArray = ["S-1", "S-5", "S-2", "S-6", "S-3", "S-7", "S-4", "S-8"];
var result = sortingArray.filter((el)=>(input.indexOf(el) > -1));
console.log(JSON.stringify(result));
答案 1 :(得分:2)
使用"排序数组"
构建一个查找对象var indexes = sortingArray.reduce(function(lookup, key, index) {
lookup[key] = index;
return lookup;
}, {});
现在你可以在比较器函数中使用它:
input.sort(function(k1, k2) {
return indexes[k1] - indexes[k2];
});
答案 2 :(得分:1)
简单地使用for循环。并将if条件应用于数组长度的一半。然后传递新数组
var input = ['S-1','S-2','S-3','S-4','S-5','S-6','S-7','S-8'];
var c =eval(input.length/2);
arr=[];
for(var i=0; i<input.length; i++){
if(i < c)
{
arr.push(input[i]);
arr.push(input[i+c]);
}
}
console.log(arr)
&#13;
答案 3 :(得分:0)
您可以使用带有已排序数组索引的对象,并使用它对新数组进行排序。
var input = ['S-1', 'S-2', 'S-3', 'S-4', 'S-5', 'S-6', 'S-7', 'S-8'],
sortingArray = ["S-1", "S-5", "S-2", "S-6", "S-3", "S-7", "S-4", "S-8"],
order = Object.create(null);
sortingArray.forEach(function (a, i) { order[a] = i; });
input.sort(function (a, b) { return order[a] - order[b]; });
console.log(input);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;