У меня есть массив всех объектов компании
const all= [{'text': 'first'}, {'text':'second'},{'text:': 'third'}]
А также массив текущей компании
const current = [{'text:': 'third'}]
Помогите оставить только те "текстовые" элементы, которые не дублируются в массив, который называется "все"
Я пытаюсь найти решение, но мне не хватает опыта
const all= [{'text': 'first'}, {'text':'second'},{'text:': 'third'}]
const current = [{'text:': 'third'}]
function test(){
const result = all.filter(el=>{
if (all.some(element=> el.text === element.text)){
return false
} else {
return true
}
})
console.info(result)
}
test()
!важно, чтобы поиск назывался по тексту, так как id может отличаться
там опечатка - "текст:"
Какая потребность в текущем массиве в этой задаче
Отвечает ли это на ваш вопрос? Получить все неуникальные значения (т.е. повторяющиеся/более одного вхождения) в массиве
const all= [{'text': 'first'}, {'text':'second'},{'text:': 'third'}];
const current = [{'text:': 'third'}];
all.filter(ele => !current.some(cur => cur.text === ele.text))
// output
// [{text: "first"}, {text: "second"}]
Есть много способов решить эту проблему. Вы можете использовать простой цикл for, но в JS есть встроенные методы для типа массива:
.filter (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)
и
.some (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some)
Когда вы читаете функцию, она говорит: «Отфильтровать весь массив (все), если some
из current
элемента text
равен этому элементу из all
, удалите его (!
)»
@DonaldDuck спасибо, что указали на это. Надеюсь, редактирование сделает это!
Пожалуйста, добавьте желаемый результат, чтобы уточнить вопрос.