Javascript контроль равенства массивов - PullRequest
1 голос
/ 23 апреля 2020

Привет, у меня есть два массива изменяемой длины, и я попытался. Если я не нашел нужного значения, удалите его из этого массива.

array1 = [
    {
      "serial": "3",
      "code": "1"
    },
    {
      "serial": "700",
      "code": "1"
    },
    {
      "serial": "300",
      "code": "1"
    },
    {
      "serial": "400",
      "code": "1"
    }
]

array2 = [{
      "someting": 10,
      "someting2": "20",
      "serialList": ["700","711"],
    },

{
      "someting": 10,
      "someting2": "30",
      "serialList": ["300"],
    },
{
      "someting": 0,
      "someting2": "0",
      "serialList": [],
    }
]

Это мой два массива, как я уже говорил, длина массивов изменяема, иногда длина массива1 большая , иногда array2 и я хочу Если серийный номер в array1 не существует в array2 удалить из элемента array1, в соответствии с вышеупомянутыми последовательными кодами array1 [0] и array1 [3] не существует ни одного элемента array2, который я хочу вывести в массив1: 1004 *

array1 = [
    {
      "serial": "700",
      "code": "1"
    },
    {
      "serial": "300",
      "code": "1"
    }
]

Как я могу это сделать, thnx

1 Ответ

0 голосов
/ 23 апреля 2020

вот простой и читабельный подход для достижения этой цели:

let allowedSerials = array2.map( obj=> obj.serialList ).flat();
let result = array1.filter( obj =>  allowedSerials.includes(obj.serial) )

проверьте фрагмент кода ниже:

let array1 = [
    {
      "serial": "3",
      "code": "1"
    },
    {
      "serial": "700",
      "code": "1"
    },
    {
      "serial": "300",
      "code": "1"
    },
    {
      "serial": "400",
      "code": "1"
    }
]

let array2 = [{
      "someting": 10,
      "someting2": "20",
      "serialList": ["700","711"],
    },

{
      "someting": 10,
      "someting2": "30",
      "serialList": ["300"],
    },
{
      "someting": 0,
      "someting2": "0",
      "serialList": [],
    }
];

// straight-forward solution:
let allowedSerials = array2.map( obj=> obj.serialList ).flat();
let result = array1.filter( obj =>  allowedSerials.includes(obj.serial) )
console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...