Славик
массивы передаются по ссылке
Славик
так что, изменяя массив в объекте-буфере, ты его изменишь и там, где он уже задан
Светлана
покажи
ну вот пример [ { "id": 1, "parentId": 1 }, { "id": 2, "parentId": 1 }, { "id": 3, "parentId": 2 }] где первый будет верхний уровень, второй вложенный в первый, а третий в второй. но вложенностей может быть любое количество
Lupusregina[beta]
побоку
покажи реализацию
Светлана
то есть нужно добавить children: [] к каждому объекту, в котором будут вложенные уровни
Славик
Anton
извращенцы. какая еще рекурсия?
Vladislav
А, я понял задание
Anton
const Map = new Map(); let parentId = null; children.forEach(e => { if(e.id === e.parentId) { parent = e.id; } map.set(e.id, {...e, children: []}); }); children.forEach(({id, parrentId}) => map.get(parentId).children.push(map.get(id))); const parent = map.get(parentId);
Anton
но скорее всего сразу не сработает
Lupusregina[beta]
ну вот пример [ { "id": 1, "parentId": 1 }, { "id": 2, "parentId": 1 }, { "id": 3, "parentId": 2 }] где первый будет верхний уровень, второй вложенный в первый, а третий в второй. но вложенностей может быть любое количество
const array = [ {id: 0, parentId: null, title: "text-0"}, {id: 1, parentId: 0, title: "text-0"}, {id: 2, parentId: 1, title: "text-0"}, {id: 3, parentId: 1, title: "text-0"}, ]; const toTree = _array => { const array = _array.map(v => ({...v, parent: null, children: []})); const map = array.reduce((m, v) => (m[v.id] = v, m), {}); for(const item of array) { item.parent = map[item.parentId]; if ( item.parent ) item.parent.children.push(item); } return map; }
Славик
слишком много итераций
Славик
(() => { let array = [ { "id": 1, "parentId": 1 }, { "id": 2, "parentId": 1 }, { "id": 3, "parentId": 2 }]; let result = []; let container = {}; const checkContainer = id => container[id] || (container[id] = []); array.forEach(item => { checkContainer(item.id); checkContainer(item.parentId); item.children = container[item.id]; if (item.id === item.parentId) { result.push(item); } else { container[item.parentId].push(item); } }) console.log(result); })()
Ryhor
Привет. Как отменить последний merge между ветками на гитхаб?
Vladislav
В чем разница, почему показываются по-разному?
Vladislav
Внутри одинаковые
Светлана
спасибо
Lupusregina[beta]
Vladislav
что не так?
В одном есть превью свойств, в другом нет
Lupusregina[beta]
фу
Denis
javascript const fs = require('fs') const path = require('path') const fetch = require('node-fetch') const unique = (array) => { const unique = {} const result = [] array.forEach((key) => { if (unique.hasOwnProperty(key)) { return } result.push(key) unique[key] = 1 }) return result } const collectCluesOther = async (word, page) => { const url = `https://www.freecrosswordsolver.com/answer/${word}?page=${page}` console.log(url) const response = await fetch(url) const text = await response.text() const match = text.match(/(?<=crossword-clue">)[\w\s]+(?=<)/g) return match || [] } const collectClues = async (word) => { const clues = [] const url = `https://www.freecrosswordsolver.com/answer/${word}` console.log(url) const response = await fetch(url) const text = await response.text() const re = new RegExp( `(?<=<a class="page-link" href="https:\/\/www\\.freecrosswordsolver\\.com\/answer\/${word}\\?page=)\\d+(?=">)`, 'g', ) const pages = text.match(re) let allPages if (pages) { allPages = Array.from({ length: Math.max(...pages) }, (_, i) => i + 1) allPages.shift() } const match = text.match(/(?<=crossword-clue">)[\w\s]+(?=<)/g) clues.push(...(match || [])) while (allPages && allPages.length > 0) { clues.push(...(await collectCluesOther(word, allPages.shift()))) } return unique(clues) } const collectWords = async () => { for (let i = 0; i <= 308; i += 1) { const answers = [] const url = `https://www.freecrosswordsolver.com/sitemap-answers-${i}.xml` console.log(url) const response = await fetch(url) const text = await response.text() const match = text.match(/(?<=answer\/)\w+(?=<)/g) answers.push(...(await Promise.all(match.map(async (word) => ({ word, clues: await collectClues(word), }))))) console.log(path.join(__dirname, `answers-${i}.json`)) fs.writeFileSync(path.join(__dirname, `answers-${i}.json`), answers) } } collectWords() Чекните плиз код. Что с ним не так?
Syntax Highlight Bot
javascript const fs = require('fs') const path = require('path') const fetch = require('node-fetch') const unique = (array) => { const unique = {} const result = [] array.forEach((key) => { if (unique.hasOwnProperty(key)) { return } result.push(key) unique[key] = 1 }) return result } const collectCluesOther = async (word, page) => { const url = `https://www.freecrosswordsolver.com/answer/${word}?page=${page}` console.log(url) const response = await fetch(url) const text = await response.text() const match = text.match(/(?<=crossword-clue">)[\w\s]+(?=<)/g) return match || [] } const collectClues = async (word) => { const clues = [] const url = `https://www.freecrosswordsolver.com/answer/${word}` console.log(url) const response = await fetch(url) const text = await response.text() const re = new RegExp( `(?<=<a class="page-link" href="https:\/\/www\\.freecrosswordsolver\\.com\/answer\/${word}\\?page=)\\d+(?=">)`, 'g', ) const pages = text.match(re) let allPages if (pages) { allPages = Array.from({ length: Math.max(...pages) }, (_, i) => i + 1) allPages.shift() } const match = text.match(/(?<=crossword-clue">)[\w\s]+(?=<)/g) clues.push(...(match || [])) while (allPages && allPages.length > 0) { clues.push(...(await collectCluesOther(word, allPages.shift()))) } return unique(clues) } const collectWords = async () => { for (let i = 0; i <= 308; i += 1) { const answers = [] const url = `https://www.freecrosswordsolver.com/sitemap-answers-${i}.xml` console.log(url) const response = await fetch(url) const text = await response.text() const match = text.match(/(?<=answer\/)\w+(?=<)/g) answers.push(...(await Promise.all(match.map(async (word) => ({ word, clues: await collectClues(word), }))))) console.log(path.join(__dirname, `answers-${i}.json`)) fs.writeFileSync(path.join(__dirname, `answers-${i}.json`), answers) } } collectWords() Чекните плиз код. Что с ним не так?
Lupusregina[beta]
javascript const fs = require('fs') const path = require('path') const fetch = require('node-fetch') const unique = (array) => { const unique = {} const result = [] array.forEach((key) => { if (unique.hasOwnProperty(key)) { return } result.push(key) unique[key] = 1 }) return result } const collectCluesOther = async (word, page) => { const url = `https://www.freecrosswordsolver.com/answer/${word}?page=${page}` console.log(url) const response = await fetch(url) const text = await response.text() const match = text.match(/(?<=crossword-clue">)[\w\s]+(?=<)/g) return match || [] } const collectClues = async (word) => { const clues = [] const url = `https://www.freecrosswordsolver.com/answer/${word}` console.log(url) const response = await fetch(url) const text = await response.text() const re = new RegExp( `(?<=<a class="page-link" href="https:\/\/www\\.freecrosswordsolver\\.com\/answer\/${word}\\?page=)\\d+(?=">)`, 'g', ) const pages = text.match(re) let allPages if (pages) { allPages = Array.from({ length: Math.max(...pages) }, (_, i) => i + 1) allPages.shift() } const match = text.match(/(?<=crossword-clue">)[\w\s]+(?=<)/g) clues.push(...(match || [])) while (allPages && allPages.length > 0) { clues.push(...(await collectCluesOther(word, allPages.shift()))) } return unique(clues) } const collectWords = async () => { for (let i = 0; i <= 308; i += 1) { const answers = [] const url = `https://www.freecrosswordsolver.com/sitemap-answers-${i}.xml` console.log(url) const response = await fetch(url) const text = await response.text() const match = text.match(/(?<=answer\/)\w+(?=<)/g) answers.push(...(await Promise.all(match.map(async (word) => ({ word, clues: await collectClues(word), }))))) console.log(path.join(__dirname, `answers-${i}.json`)) fs.writeFileSync(path.join(__dirname, `answers-${i}.json`), answers) } } collectWords() Чекните плиз код. Что с ним не так?
а у этого сайта точно апи не какого нету?
Денис
Если кто-то с этим столкнется, то нужно было просто добавить в ссылку enablejsapi=1
Денис
https://codepen.io/Benvi27/pen/YoOPbZ Что тут не так? хочу, чтобы при смене слайда боковые видосики становились на паузу автоматически
Денис
Такой вид имеет
Vladislav
Киньте чат по ноде
Славик
https://t.me/nodejs_ru
Lupusregina[beta]
Найдешь?
не нашел. А что не так с кодом?
Denis
Файл не пишет
Lupusregina[beta]
Файл не пишет
какую ошибку показывает?
Denis
Никакую
Lupusregina[beta]
Никакую
так ты же массив сохраняешь, надо строку
Denis
Вот так встает
Lupusregina[beta]
ПОфиксил
и ошибку должно было показывать
Lupusregina[beta]
ну теперь работает?
Denis
Все равно не пашет
Denis
Попробуй запусти у себя
Lupusregina[beta]
Попробуй запусти у себя
надо фетч установить
Denis
Да, только node-fetch
Lupusregina[beta]
Да, только node-fetch
у меня работает
Lupusregina[beta]
но я обрезал до 1о слова. У тебя же все слова разом грузятся, вот видать сервак и банит
Lupusregina[beta]
я бы вообще переделал все. сайт качать не одну миниту же, и надо сохранять промежуточные результаты
Anonymous
Hello Everyone. I have some small business plan with programmer who live in Europe and America. If you don't worry about to share your info and IP, I will pay to you. If you have some interesting, Please read my avatar.
Pavel
Угар))
Pavel
Вонг хуй
Pavel
Чо он Майнер запустит?
Foma
Мошенник
Максим
нет
Максим
скорее всего нелегал будет вести
Максим
так что фбр вломится
Максим
в дом
Максим
хотя на это тор есть
Максим
хз зачем
Максим
может вымогатель
Juan
как из консоли переключить JavaScript contexts?
Juan
через код конечно ж, не руками
Vladislav
может вымогатель
Их банят на апворке, поэтому они ищут все способы
Vladislav
Это либо из Китая, что ещё более менее
Максим
что такое апворк?
Vladislav
Либо из Индии
Ragnar
апворк продвигает демонические правила и кошмарит всех кого может
Ragnar
я верю китайцу
Vladislav
что такое апворк?
Фриланс биржа на которой сложно зарегистрироваться
Максим
За что их банят?
Denis
Что нет других бирж?