169 похожих чатов

Всем привет. Подскажите как зациклить, чтобы вручную вложенность не прописывать? Нужно вернуть

массив если в дочернем workControl == intermediate

Массив
[
{
"id": 0,
"title": "Базовая часть",
"content": []
},
{
"id": 1,
"title": "Профильная часть",
"placeholder": "Профильная часть",
"content": [
{
"id": 2,
"title": "intermediate current",
"content": [
{
"id": 3,
"title": "intermediate current",
"content": [
{
"id": 4,
"title": "intermediate current",
],
"workControl": [
"intermediate",
"current"
],
"content": []
}
]
}
]
},
{
"id": 22,
"title": "нету",
"content": [
{
"id": 23,
"title": "нету",
"content": [
{
"id": 24,
"title": "нету",
"workControl": [],
"content": []
}
]
}
]
}
]
}
]

Код который сообразил

currentControl(){
let currentControl = [];
let arr = [];
if(toRaw(this.getSteps[4].formData) !== undefined){
currentControl = toRaw(this.getSteps[4].formData.content).map(part => {
part.content.filter(elem => {
if(elem.content.length){
console.log('elee', elem.title)
elem.content.filter(elem2 => {
if(elem2.content.length){
console.log('el2', elem2)
elem2.content.filter(elem3 => {
console.log('el3', elem3)
if(elem3.workControl.filter(control => {
console.log('control', control)
if(control == 'intermediate'){
arr.push(elem3)
}
}))
return []
})
return []
}
})
return []
}
})
});
console.log('dddd', currentControl)
console.log('arrrrr', toRaw(arr))
return arr
}
}

12 ответов

104 просмотра

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

Roman-Abramovich Автор вопроса
Роман Бандурин
что хочешь получить? результат какого вида? возмож...

[ { "id": 4, "title": "intermediate current", "description": "ccccc", "placeholder": "zxczcx", "period": [ { "id": 6, "value": 6, "title": "6 недели" }, { "id": 4, "value": 4, "title": "4 недели" } ], "workControl": [ "intermediate", "current" ], "lectures": 0, "practice": 6, "homework": 0, "type": "practice", "content": [] } ]

Ты хочешь оставить только такие элементы, что где-то внутри в элементе есть intermediate===current?

Roman Abramovich
Да

type WorkControl = 'intermediate' | 'current' interface Item { workControl: WorkControl content: Item[] } function isCurrentDeep(item: Item) { if (item.workControl.includes('current')) return true if (item.content.length === 0) return false return item.content.some(nestedItem => isCurrentDeep(nestedItem)) } arr.filter(item => isCurrentDeep(item))

Roman Abramovich
Да

или тебе надо «дай мне все такие нижние элеметы, что workControl === current»?

Roman Abramovich
https://codepen.io/itjustalance/pen/bGzdmLm

🙂 потратил час своей жизни https://codepen.io/salmasov/pen/qBgdQxY

Roman-Abramovich Автор вопроса
Илья Салмасов
🙂 потратил час своей жизни https://codepen.io/sal...

хм, примерно такой вариант я видел с функцией внутри функции, но почемуто думал что можно в 3-4 строчки уложиться. Но видимо никак. Спасибо, помогли

Roman Abramovich
хм, примерно такой вариант я видел с функцией внут...

Если в computed делаешь такое вычисление, то еще надо результат скопировать

Roman-Abramovich Автор вопроса
Илья Салмасов
Если в computed делаешь такое вычисление, то еще н...

Засуну в tools.js и в computed буду вызывать тогда

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта