Сравнение и исключение массива объектов

#javascript #arrays #reactjs #object

#javascript #массивы #reactjs #объект

Вопрос:

Я использую эту удобную функцию:

 function not(a, b) {
  return a.filter((value) => b.indexOf(value) === -1);
}
 

Тогда у меня есть это

 let AvailableList = not(FullList, MyList);
 

Если бы я привел пример первого элемента в myList и FullList, это:

 appName: "MyAppName*"
description: null
permissionID: MyAppID*
permissionName: "MyAppPermName*"
__proto__: Object
 

Итак, изначально AvailableList полон элементов, подобных приведенным выше. Когда пользователь делает выбор и сохраняет его, я сохраняю его в myList. Итак, мне нужно использовать эту функцию not для вычисления оставшихся частей из myList. Но даже когда я перемещаю первый элемент AvailableList в myList, проверьте, как if(AvailableList === MyList) console.log(true) else console.log(false) я получаю false. Но если я консольно регистрирую оба первых элемента массива, они печатают одинаковые значения. Я попытался сравнить после объявления переменных, используя Object.assign() также, но без помощи.

Возможно, я смогу легко справиться с этим, проверяя значение, подобное permissionID, но я не хочу идти по этому пути, поскольку позже появятся другие элементы, у которых не будет permissionID .

Если вы знаете другую функцию, которая может работать лучше, не стесняйтесь поделиться. Пожалуйста, не делитесь библиотечными решениями, такими как Lodash.

  • * записи замаскированы

Комментарии:

1. какое свойство вы хотите сравнить?

2. Сравнение объектов с === сравнивает их как экземпляры. Два отдельных экземпляра объекта никогда === не относятся друг к другу. Однако из вашего вопроса не очень ясно, может ли это быть проблемой, потому что вы не опубликовали код, который создает задействованные массивы.

3. Я хочу сравнить весь объект. итак, у меня есть массив, полный подобных объектов, и я хочу сравнить весь объект за раз, чтобы я мог дать (array1,array2), тогда он вернет мне результат массива, который содержит все элементы array1, но удалил все элементы array2

4. @Pointy он не сравнивает по === . Он использует indexOf затем проверяет его значение, чтобы увидеть, равно ли оно -1. В AvailableList есть все элементы, полные объектов, как в приведенном мной примере. myList изначально пуст, затем пользователь выбирает и перемещает элементы на странице, после чего некоторые элементы массива перемещаются в myList

5. Но .indexOf() внутренне сравнивает с === .