21.10.2018, 12:17
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
Aetae,
ок
let categories = [
{"id": 1, "title": "Комплектующие", "pid": null},
{"id": 2, "title": "Ноутбуки", "pid": null},
{"id": 3, "title": "Сумки под ноутбуки", "pid": 2},
{"id": 4, "title": "Сумки мужские", "pid": 3},
{"id": 5, "title": "Cумки мужские синие", "pid": 4},
{"id": 6, "title": "Жесткие диски", "pid":1},
{"id": 7, "title": "Кабеля", "pid":1},
{"id": 8, "title": "Кабеля HDMI", "pid": 7},
{"id": 9, "title": "Мониторы", "pid": null},
{"id": 10, "title": "Кабеля HDMI mini", "pid": 8},
{"id": 11, "title": "Сумки женские", "pid": 3},
{"id": 12, "title": "Сумки мужские синие с рюшечками", "pid": 5}
];
let targets = [{"id": 7, "title": "Кабеля", "pid":1},
{"id": 8, "title": "Кабеля HDMI", "pid": 7},
{"id": 9, "title": "Мониторы", "pid": null}]
let arrOut = categories.filter(e => targets.every(k => k.id != e.id));
console.log(arrOut)
|
|
21.10.2018, 12:36
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,589
|
|
рони, ну да, как-то так:
let categories = [
{"id": 1, "title": "Комплектующие", "pid": null},
{"id": 2, "title": "Ноутбуки", "pid": null},
{"id": 3, "title": "Сумки под ноутбуки", "pid": 2},
{"id": 4, "title": "Сумки мужские", "pid": 3},
{"id": 5, "title": "Cумки мужские синие", "pid": 4},
{"id": 6, "title": "Жесткие диски", "pid":1},
{"id": 7, "title": "Кабеля", "pid":1},
{"id": 8, "title": "Кабеля HDMI", "pid": 7},
{"id": 9, "title": "Мониторы", "pid": null},
{"id": 10, "title": "Кабеля HDMI mini", "pid": 8},
{"id": 11, "title": "Сумки женские", "pid": 3},
{"id": 12, "title": "Сумки мужские синие с рюшечками", "pid": 5},
];
let targets = [{"id": 7, "title": "Кабеля", "pid":1},
{"id": 8, "title": "Кабеля HDMI", "pid": 7},
{"id": 9, "title": "Мониторы", "pid": null},]
function filterObjectArray(array, exclude, keys){
if(keys){
function filter(first){
return !exclude.some(
second => keys.every(
key => first[key] === second[key]
)
)
}
}else{
function filter(first){
const keysLength = Object.keys(first).length;
return !exclude.some(
second => keysLength === (keys = Object.keys(second)).length
&& keys.every(
key => first[key] === second[key]
)
)
}
}
return array.filter(filter)
}
filterObjectArray(categories, targets, ['id']);
filterObjectArray(categories, targets);
__________________
29375, 35
|
|
21.10.2018, 12:38
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Роман Андреевич
|
источник БД, получаем основные категории а потом редактируем список
|
Что же вам мешает в запросе указать выборку только уникальных значений? Вы загодя лишнее получаете, чтобы потом еще и клиента нагружать пустой работой.
|
|
25.10.2018, 06:42
|
Профессор
|
|
Регистрация: 12.08.2016
Сообщений: 299
|
|
laimas, ничего не мешает, в реалиях так и делается))) Тут тестовое задание
|
|
|
|