如果您需要按循环顺序放置数组的值,这意味着:
输入:[1, 2, 4, 4, 3, 3, 2, 1]
输出:[1, 2, 3, 4, 1, 2, 3, 4]
然后你可以使用下面的2个功能。第一个使用第二个。
对于第一个函数,您需要提供 2 个参数:
第一个参数:应该排序的项目数组(从上面输入)
第二个参数:正确顺序的数组([1, 2, 3, 4]上面的例子)
function sortByOrder (array, order) {
const arrayOfArrays = order.map(v => {
return [...Array(howMany(v, array))].map(undef => v);
});
const tempArray = [];
arrayOfArrays.forEach((subArr, i) => {
let index = order.indexOf(order[i]);
subArr.forEach(duplicate => {
tempArray[index] = duplicate;
index += order.length;
});
});
return tempArray.filter(v => v);
}
function howMany(value, array) {
const regExp = new RegExp(value, 'g');
return (array.join(' ').match(regExp) || []).length;
}