Сравнить два массива
Привет.
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 |
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); |
voraa,
сенькью вери мач) |
К сожалению, видимо тут нельзя использовать ever(), так как выводится только один результат, если таковых совпадений несколько. Придётся наверное с циклами заморачиваться.
|
Цитата:
Почему нельзя сразу описать всю задачу, а не выдавать ее по кусочкам? Почему сразу не привести нормальный пример, где результатов несколько? И почему сразу, в первом же посте, не сказать, что должно быть результатом число, объект, массив чисел, массив объектов? Кто за вас это должен додумывать? |
voraa,
Да конечно вы правы. Никто и не спорит. Но к сожалению не всегда получается делать сразу как надо. |
Цитата:
Есть еще такие методы, как filter, map... Во многих случаях методов массивов хватает, что бы самому не городить циклы |
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}] |
Цитата:
Вы же писали Цитата:
const b = arr1.filter (a1 => arr2.every (a2 => a2.c != a1.a)); Либо const b = arr1.filter (a1 => arr2.some (a2 => a2.c == a1.a)); Сами уж как нибудь определитесь, что вам надо |
Блин, я уже сам запутался. Тут перебераю разные варианты, сами объекты поменялись и тп.) Плюс к решению самой задачи подошёл с другой стороны. В этом примере, да вы правы нужно на выходе
[{'a':3,'b':4},{'a':2,'b':2}] |
Часовой пояс GMT +3, время: 11:16. |