У меня есть два массива, которые я хочу манипулировать. Он будет использоваться в качестве списка.Карта двух массивов и удаления дубликатов, сохраняя все элементы
Предположим, что система отображает пользователя, какие фрукты являются их любимыми в списке. Система отобразит несколько фруктов, и она может отметить те, которые ей нравятся, которые будут прикреплены к их позиции (индексу).
Остальные (нулевые/непривязанные) позиции будут заполнены, все остальные фрукты будут доступны.
Ниже код:
let favoriteFruits = [null, null, 'banana', null, 'pineapple', null, null, null, null, null]
let allFruits = ['grape', 'banana', 'orange', 'pineapple', 'blueberry', 'strawberry']
let fruitsDisplayed = new Array(10)
allFruits = allFruits.filter(fruit => !favoriteFruits.includes(fruit))
fruitsDisplayed = favoriteFruits.slice(0)
fruitsDisplayed = fruitsDisplayed.map((fruit, i) => fruit == null ? allFruits[i] : fruit)
console.log(fruitsDisplayed)
Поскольку favoriteFruits
собраны из allFruits
(пользователь может выбрать только ее любимый, если он доступен на нашем все список), что происходит, когда пользователь любимый данный фрукт (и индекс объекта хранится в списке), заключается в том, что когда я повторяю массив allFruits
для заполнения нулевых пробелов, он вызывает дублирование, чего я хочу избежать.
Ожидаемый результат: fruitsDisplayed
be favoriteFruits
ostored n их позиции, добавлено allFruits
на все пустые пробелы **, кроме тех, которые уже были предоставлены **. Я не могу сейчас думать об этом.
Обратите внимание, что у меня нет контроля над favoriteFruits
, который их фрукты/указатели задают пользователем.
То, что я пытаюсь выполнить (нуль-пространства предназначены, чтобы быть там):
текущий результат:
(где мой черника ??)
[
"grape",
"orange",
"banana",
"strawberry",
"pineapple",
undefined,
undefined,
undefined,
undefined,
undefined
]
ожидается
[
"grape",
"orange",
"banana", // already favorited
"blueberry",
"pineapple", // already favorited
"strawberry",
undefined,
undefined,
undefined,
undefined
]
Я не эксперт по JavaScript, с o если ответ отвечает на любую практику кода, которую я делаю, я с радостью отредактирую, чтобы соответствовать моим потребностям.
Я хотел бы предложить, если вы ищете для этого типа логики во многих местах в вашем приложении, вы заканчивали Lodash.js. У этого есть много цепных методов, чтобы сделать то, что Вы ищете здесь. – jusopi
@MikeMcCaughan не очень.Я хочу объединить их, но я бы хотел сохранить любимую позицию. –
@jusopi спасибо, но я думаю, что этот код очень возможен с простым JavaScript. Добавление библиотеки здесь было бы излишним. –