注意题目如下
代码实现 将arr1合并,key为值,value为key出现的次数 按照arr2的顺序,将arr1中折叠部分展开, 由于数据的值存在数组下标中,因此没用的数据其实已经排序好了,直接按照第二步生成的下标,继续展开即可
var relativeSortArray = function (arr1, arr2) {
var count = [];
for (var num of arr1) {
if (count[num]) {
count[num]++
} else {
count[num] = 1
}
}
var index = 0;
for (var num of arr2) {
while (count[num]--) {
arr1[index++] = num;
}
}
for (var i = 0; i < count.length; i++) {
while (count[i]-- > 0) {
arr1[index++] = i;
}
}
return arr1;
};
调试代码
var arr1 = [2,3,1,3,2,4,6,7,9,2,19,19], arr2 = [2,1,4,3,9,6]
console.log(relativeSortArray(arr1,arr2));