Сравнить два массива
Привет.
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, время: 06:31. |