Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.05.2020, 16:04
Аспирант
Отправить личное сообщение для dc65k Посмотреть профиль Найти все сообщения от dc65k
 
Регистрация: 19.05.2020
Сообщений: 46

Как обработать кейс в задаче на совпадение по массиву?
Всем привет, подскажите, пожалуйста, как решить задачу.
У меня есть массив данных, который приходит с бэка:
const arr2 = [
    {
        id: '1',
        title: 'one'
    },
    {
        id: '3',
        title: 'three'
    },
    {
        id: '2',
        title: 'two'
    },
    {
        id: '4',
        title: 'four'
    }
]

И массив, по которому я буду искать совпадение данных.
const arr1 = [
    {
        id: '1',
        title: 'one'
    },
    {
        id: '2',
        title: 'two'
    }
]

Мне нужно вернуть все совпадения. Например, можно это сделать так:
let arrayList = []

for (let i = 0; i < arr2.length; i++) {

    let obj = arr1.find((a) => {
        return a.title === arr2[i].title
    })

    if (obj) {
        arrayList.push(obj)
    }
}

Вопрос, как действовать в ситуации, если с бэка, будет меньше данных, чем в массиве по которому я ищу совпадения:
const arr2 = [
    {
        id: '1',
        title: 'one'
    }
]
Ответить с цитированием
  #2 (permalink)  
Старый 27.05.2020, 16:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

dc65k,
в чём сомнения?
Ответить с цитированием
  #3 (permalink)  
Старый 27.05.2020, 16:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

dc65k,
тоже самое немного по другому
<script>
const arr2 = [
    {
        id: '1',
        title: 'one'
    },
    {
        id: '3',
        title: 'three'
    },
    {
        id: '2',
        title: 'two'
    },
    {
        id: '4',
        title: 'four'
    }
];
const arr1 = [
    {
        id: '1',
        title: 'one'
    },
    {
        id: '2',
        title: 'two'
    }
];
const  arrayFilter = (array, sample) => array.filter(({title : a})  => sample.some(({title : b}) => a === b));
let arrayList = arrayFilter(arr2, arr1);
document.write(JSON.stringify(arrayList, "", 4));
</script>
Ответить с цитированием
  #4 (permalink)  
Старый 27.05.2020, 18:32
Аспирант
Отправить личное сообщение для dc65k Посмотреть профиль Найти все сообщения от dc65k
 
Регистрация: 19.05.2020
Сообщений: 46

Спасибо.
Ответить с цитированием
  #5 (permalink)  
Старый 27.05.2020, 19:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

dc65k,
не плодите однотипные темы
Ответить с цитированием
  #6 (permalink)  
Старый 27.05.2020, 19:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Сообщение от dc65k
Как отфильтровать массив , вернуть, то, что не совпало?
!sample.some
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обработать вебстраницу не показывая ее? layla Общие вопросы Javascript 23 24.10.2010 18:18
Как правильно обработать событие? BAnder Events/DOM/Window 19 03.02.2009 14:09
Как обработать несколько элементов подряд? vladymyrk jQuery 1 07.01.2009 20:33
Как обработать такую конструкцию if(V1=0){fl1='au'}; Nikitos* Общие вопросы Javascript 1 19.12.2008 12:46
Как обработать событие Cresh Events/DOM/Window 1 31.05.2008 06:17