Пересортировать массив
Имеется два массива:
const array1 = ['one', 'two', 'three', 'four', 'five'];
const array2 = ['four', 'two'];
Подскажите пожалуйста, как пересортировать array2, чтобы его айтемы имели последовательность, как в array1?
Чтобы получилось
array2 = ['two', 'four'];
Ответы (3 шт):
Автор решения: Gelloiss
→ Ссылка
const array1 = ['one', 'two', 'three', 'four', 'five'];
const array2 = ['four', 'two'];
const result = [];
for (let i = 0; i < array1.length; i++) {
for (let j = 0; j < array2.length; j++) {
if (array1[i] === array2[j]) {
result.push(array2[j])
}
}
}
console.log(result)
const array1 = ['one', 'two', 'three', 'four', 'five'];
const array2 = ['four', 'two'];
const array2Len = array2.length;
for (let i = 0; i < array1.length; i++) {
for (let j = 0; j < array2Len; j++) {
if (array1[i] === array2[j]) {
array2.push(array2[j])
}
}
}
array2.splice(0, array2Len)
console.log(array2)
Автор решения: Андрей Солуянов
→ Ссылка
const array1 = ['one', 'two', 'three', 'four', 'five'];
const array2 = ['four', 'two'];
function sort (array1, array2){
array1.forEach((array1Value,index)=>{
if(!array2.includes(array1Value)) array1.splice(index,1)
})
return array1
}
console.log(sort(array1,array2));
Автор решения: Deonis
→ Ссылка
Говоря про индексы в комментарии к вашему вопросу ещё до всех ответов, в которых господа отвечающие почему-то пошли по какому-то сложному пути, я имел в виду сортировку, основанную на индексах значений первого ("эталонного") массива. И выглядит это достаточно просто:
const array1 = ['one', 'two', 'three', 'four', 'five'];
const array2 = ['four', 'two'];
array2.sort((a,b) => array1.indexOf(a) - array1.indexOf(b));
console.log(array2);