Помогите понять как дописать мой код, а то запутался в цикле. В целом нужно написать по этому алгоритму: 1) сортировка по алфавиту исходного массива
2) массив результатов с первым
3) цикл, который
берет у каждого close, копирует close, отфильтровывает тех, кто уже есть в массиве-результате
пушит того, кто остался в close если есть хоть кто-то.
Берем первого гост, сажаем
За столом один человек
Берем close
Ищем имя второго
Потом шерстим изначальный список по алфавиту
И сажаем второго
Берем его close...
let arr = [
{ name: 'Ali', close: ['Vasil', 'Wog'] },
{ name: 'San', close: ['Vasil', 'Zena'] },
{ name: 'Vasil', close: ['San', 'Ali'] },
{ name: 'Wog', close: ['Zena', 'Ali'] },
{ name: 'Zena', close: ['San', 'Wog'] }
]
function placeGuests(arr) {
let result = [];
let obj = arr[0]
result.push(arr[0])
arr.forEach((item, index, array) => {
item.close.sort((a,b) => {
return a > b ? 1 : -1;
})
})
for(var i=0; i<=arr.length; i++){
for(let key in arr[i]){
if(obj.close[0] === arr[i][key] || obj.close[1] === arr[i][key]){
obj = arr[i]
result.push(obj)
}
}
}
return result;
}
console.log(placeGuests(arr));
Я пока только к такому решению пришёл, только двоих получается усадить как надо за стол