Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.10.2023, 13:38
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 765

Сравнить два массива
Привет.
var arr1 = [
{'a':1,'b':2},
{'a':3,'b':4}
]

var arr2 = [
{'c':1,'d':5},
{'c':4,'d':4}

]


Можно ли создать условие, что если нет arr1.a==arr2.c, то получить arr1.b?
В данном примере получается arr1.b == 4
Ответить с цитированием
  #2 (permalink)  
Старый 28.10.2023, 14:07
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

var arr1 = [
{'a':1,'b':2},
{'a':3,'b':4}
]
 
var arr2 = [
{'c':1,'d':5},
{'c':4,'d':4}
 
]

const b = arr1.find (a1 => arr2.every (a2 => a2.c != a1.a))?.b;
console.log (b);
Ответить с цитированием
  #3 (permalink)  
Старый 28.10.2023, 15:03
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 765

voraa,
сенькью вери мач)
Ответить с цитированием
  #4 (permalink)  
Старый 29.10.2023, 10:56
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 765

К сожалению, видимо тут нельзя использовать ever(), так как выводится только один результат, если таковых совпадений несколько. Придётся наверное с циклами заморачиваться.
Ответить с цитированием
  #5 (permalink)  
Старый 29.10.2023, 11:23
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Сообщение от ureech
так как выводится только один результат, если таковых совпадений несколько.
А где вы в первом посте говорите про несколько результатов?
Почему нельзя сразу описать всю задачу, а не выдавать ее по кусочкам?
Почему сразу не привести нормальный пример, где результатов несколько?
И почему сразу, в первом же посте, не сказать, что должно быть результатом число, объект, массив чисел, массив объектов?
Кто за вас это должен додумывать?

Последний раз редактировалось voraa, 29.10.2023 в 11:31.
Ответить с цитированием
  #6 (permalink)  
Старый 29.10.2023, 11:55
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 765

voraa,
Да конечно вы правы. Никто и не спорит. Но к сожалению не всегда получается делать сразу как надо.
Ответить с цитированием
  #7 (permalink)  
Старый 29.10.2023, 12:14
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Сообщение от ureech
Придётся наверное с циклами заморачиваться.
Пример нужен. И что должно быть в конечном результате.
Есть еще такие методы, как filter, map...
Во многих случаях методов массивов хватает, что бы самому не городить циклы
Ответить с цитированием
  #8 (permalink)  
Старый 29.10.2023, 12:28
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 765

var arr1 = [
{'a':1,'b':2},
{'a':3,'b':4},
{'a':2,'b':2},
{'a':1,'b':20},
{'a':4,'b':2},
]

var arr2 = [
{'c':1,'d':5},
{'c':4,'d':4}
]

//На выходе
[{'a':1,'b':2},{'a':1,'b':20},{'a':4,'b':2}]
Ответить с цитированием
  #9 (permalink)  
Старый 29.10.2023, 12:30
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Сообщение от ureech
//На выходе
[{'a':1,'b':2},{'a':1,'b':20},{'a':4,'b':2}]
Я не понял.
Вы же писали
Сообщение от ureech
если нет arr1.a==arr2.c,
Либо
const b = arr1.filter (a1 => arr2.every (a2 => a2.c != a1.a));


Либо
const b = arr1.filter (a1 => arr2.some (a2 => a2.c == a1.a));


Сами уж как нибудь определитесь, что вам надо

Последний раз редактировалось voraa, 29.10.2023 в 12:40.
Ответить с цитированием
  #10 (permalink)  
Старый 29.10.2023, 12:49
Профессор
Отправить личное сообщение для ureech Посмотреть профиль Найти все сообщения от ureech
 
Регистрация: 11.03.2013
Сообщений: 765

Блин, я уже сам запутался. Тут перебераю разные варианты, сами объекты поменялись и тп.) Плюс к решению самой задачи подошёл с другой стороны. В этом примере, да вы правы нужно на выходе
[{'a':3,'b':4},{'a':2,'b':2}]
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сравнить два массива объектов Роман Андреевич Общие вопросы Javascript 0 15.04.2019 15:22
Сравнить два массива с объектами и удалить совпадения Роман Андреевич Общие вопросы Javascript 13 25.10.2018 06:42
Сравнить два массива bohdantheone Общие вопросы Javascript 79 07.02.2018 10:04
Сравнить два двумерных массива victornalchik Элементы интерфейса 3 29.01.2018 22:52
сравнить два массива Роман Андреевич Общие вопросы Javascript 2 04.10.2017 14:12