2016-05-19 2 views
0

Я конвертирую корзину в неизменную структуру.ImmutableJs - сравнить объекты, но для одного объекта

Есть ли простой способ с immutablejs, чтобы узнать, существует ли неизменяемый объект в неизменном списке EXCEPT для одного свойства объекта «количество», которое может быть другим? Пример примера:

[{ 
    id: 1, 
    name: 'fish and chips', 
    modifiers: [ 
    { 
     id: 'mod1', 
     name: 'Extra chips' 
    } 
    ], 
    quantity: 2 
},{ 
    id: 2, 
    name: 'burger and chips', 
    modifiers: [ 
    { 
     id: 'mod1', 
     name: 'No salad' 
    } 
    ], 
    quantity: 1 
}] 

Теперь, скажем, у меня был еще один объект, который нужно положить в список. Но я хочу проверить, существует ли этот точный элемент с модификаторами в списке? Я мог бы просто сделать list.findIndex(item => item === newItem), но из-за возможного свойства количества, тогда он не будет работать. Есть ли способ === проверить отдельно от одного свойства? Или любой способ сделать это без необходимости перебирать все свойства (помимо количества), чтобы увидеть, одинаковы ли они?

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

+0

Пожалуйста, уточните свой вопрос с вашей моделью и что именно вы хотите найти. – hazardous

+0

@HazardouS да, конечно, обновлено –

ответ

1

Ну это должно работы-

list.findIndex(item => item.delete("quantity").equals(newItem.delete("quantity"))

equals делает метод сравнения глубокое значение. Поэтому, как только вы удаляете количество, вы сравниваете все значения, которые имеют значение.

PS: пожалуйста, игнорируйте форматирование кода, я нахожусь в приложении SO.

PPS: приведенный выше код не является оптимальным, вы должны сравнить предварительно обрезанный новый элемент внутри функции стрелки, а не обрезать его там.

+0

Также удалите идентификатор, который выглядит уникальным. – hazardous

+0

хорошая идея, похоже, что это сработает, спасибо –

+1

работает красиво, приветствие помощника, 20 строк кода ушли. –

Смежные вопросы