28.10.2023, 13:38
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
Сравнить два массива
Привет.
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
|
|
28.10.2023, 14:07
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
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);
|
|
28.10.2023, 15:03
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
voraa,
сенькью вери мач)
|
|
29.10.2023, 10:56
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
К сожалению, видимо тут нельзя использовать ever(), так как выводится только один результат, если таковых совпадений несколько. Придётся наверное с циклами заморачиваться.
|
|
29.10.2023, 11:23
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от ureech
|
так как выводится только один результат, если таковых совпадений несколько.
|
А где вы в первом посте говорите про несколько результатов?
Почему нельзя сразу описать всю задачу, а не выдавать ее по кусочкам?
Почему сразу не привести нормальный пример, где результатов несколько?
И почему сразу, в первом же посте, не сказать, что должно быть результатом число, объект, массив чисел, массив объектов?
Кто за вас это должен додумывать?
Последний раз редактировалось voraa, 29.10.2023 в 11:31.
|
|
29.10.2023, 11:55
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
voraa,
Да конечно вы правы. Никто и не спорит. Но к сожалению не всегда получается делать сразу как надо.
|
|
29.10.2023, 12:14
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от ureech
|
Придётся наверное с циклами заморачиваться.
|
Пример нужен. И что должно быть в конечном результате.
Есть еще такие методы, как filter, map...
Во многих случаях методов массивов хватает, что бы самому не городить циклы
|
|
29.10.2023, 12:28
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
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}]
|
|
29.10.2023, 12:30
|
|
Профессор
|
|
Регистрация: 03.02.2020
Сообщений: 2,750
|
|
Сообщение от 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.
|
|
29.10.2023, 12:49
|
Профессор
|
|
Регистрация: 11.03.2013
Сообщений: 778
|
|
Блин, я уже сам запутался. Тут перебераю разные варианты, сами объекты поменялись и тп.) Плюс к решению самой задачи подошёл с другой стороны. В этом примере, да вы правы нужно на выходе
[{'a':3,'b':4},{'a':2,'b':2}]
|
|
|
|