Удалить массив из массива массивов javascript

Я хочу удалить массив из массива массивов без итерации по ним.

первый массив выглядит так:

array1 = [ 
[
[{"id":"A1","y":12},{"id":"A4","y":12}],
[{"id":"A2","y":1}], 
[{"id":"A3","y":6}]  
] 

второй массив:

array2 = [{"id":"A1","y":12},{"id":"A4","y":12}]

Я использую javascript и хочу удалить array2 из array1.

Извините за неправильное описание, кстати, я обнаружил, что в моем примере второй массив массива

array2 = [{ "id": "A1", "y": 12 }, { "id": "A4", "y": 2 }] 

Таким образом, два массива имеют только один равный столбец. Как я могу удалить array1 из array2, даже если у них есть только один равный атрибут?

Спасибо.

Array.filter. Array.includes
apple apple 18.04.2018 11:26
array1 не тот, есть лишний [
brk 18.04.2018 11:29

id's уникален?

Arman Charan 18.04.2018 11:39

id не уникален

Lembared Nabil 18.04.2018 12:16
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
4
2 627
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Это выглядит странно, но вы можете проверить каждый элемент массива и сопоставить его со вторым массивом. В любом случае вам нужно перебрать ваш массив. Просто набрать array1[i] == array2 нельзя, надо по другому проверять. Хакерство состоит в том, чтобы преобразовать их в JSON и сравнить строки, но есть другие методы, которые вы можете использовать для сравнения массивов.

Вот простая демонстрация с циклом for

array1 = [
  [{ "id": "A1", "y": 12 }, { "id": "A4", "y": 12 }],
  [{ "id": "A2", "y": 1 }],
  [{ "id": "A3", "y": 6 }]
]
array2 = [{ "id": "A1", "y": 12 }, { "id": "A4", "y": 12 }]
l = array1.length
for (var i = 0; i < l; i++) {
  // if arrays match
  if (JSON.stringify(array1[i]) == JSON.stringify(array2)) {
    // delete the element at `i` position
    array1.splice(i, 1);
    i--;
    l--;
    // break; // if you can guarantee that no more instances will occur 
  }
}
console.info(array1)

я обнаружил, что в моем примере второй массив массивов - это array2 = [{"id": "A1", "y": 12}, {"id": "A4", "y": 2}] Итак, два массива есть только один равный столбец. Как я могу удалить array1 из array2, даже если у них есть только один равный атрибут?

Lembared Nabil 18.04.2018 13:02

сращивание обычно используется для удаления определенного элемента из массива. Я думаю, вы хотите сделать что-то вроде этого:

    var array = [

        [{"name": "sik", "gender": "male"}],
        [{"name": "sug", "gender": "female"}],
        [{"name": "hyd", "gender": "male"}]

    ];

    // it removes the second array from the array: removes the female one.
    array.splice( 1, 1 );

Описание: Функция splice принимает два аргумента: первый - для индекса элемента, а второй - до того, сколько вы хотите удалить.

Например: splice (2, 5) - означает, что: из индекса 2, продолжать удаление до элементов 5.

Надеюсь, это поможет, спасибо.

В обычном Javascript мы не можем их фильтровать. Это будет работать, если вы имеете дело с ценными типами данных. Здесь вы сравниваете массивы, которые являются ссылочным типом данных. так что здесь нам нужно написать наш собственный стек поиска

function searchForArray(haystack, needle){
var i, j, current;
for(i = 0; i < haystack.length; ++i){
if (needle.length === haystack[i].length){
  current = haystack[i];
  for(j = 0; j < needle.length && needle[j] === current[j]; ++j);
  if (j === needle.length)
    return i;
}
}
return -1;
}

var arr = [[1,3],[1,2]];
var n   = [1,3];

console.info(searchForArray(arr,n));

Вы можете сослаться на этот вопрос, который также имеет некоторые справочные ресурсы. Проверить, существует ли массив в массиве массивов?

Я знаю, что вы просили решение без итерации, но я просто подумал дать представление о ссылках, которые могут быть вам полезны.

Другие вопросы по теме