Kyrylo
Ребята. Жесть. Проблема. Нужно создать "автоматизатор крана" для тестового задания. Есть машина на ней n-oe количество плит. Например 5. Каждая верхняя тяжелее нижней плиты. НУжно плиты перегрузить на другую машину. По правилам тяжёлая плита не может быть сверху лёгкой плиты. Можно использовать одно свободное место где отдельно можно складывать плиты, но по тем же правилам. Я это себе представляю как 3 массива, где один полный от 0 до 4. И нужно кидать подмассивы между ними Но мать его как это всё запустить НА 13дцатом if понятно что иду не в том направлении
The end
Здравствуйте, подскажите пожалуйста с чего начать изучать js. На каких ресурсах? Мб ютуб канал или сайт какой? Заранее благодарю!
The end
learn.javascript.ru
Спасибо админ
Ryhor
как с помощью lodash получить из { dota: { value: 'ok'}, cs: 'laja' } это {dota: 'ok', cs: 'laja'}?
Makc
как с помощью lodash получить из { dota: { value: 'ok'}, cs: 'laja' } это {dota: 'ok', cs: 'laja'}?
априори это не возможно, не возможно что бы дота была пижже кс
Anonymous
как с помощью lodash получить из { dota: { value: 'ok'}, cs: 'laja' } это {dota: 'ok', cs: 'laja'}?
без lodash правда const obj = { dota: { value: 'ok'}, cs: 'laja' }; const newObj = {dota: obj.dota.value, cs: obj.cs};
Anonymous
От куда такая любовь к константам?)
не знаю... красиво выглядит
Сергей
?
https://www.livelib.ru/book/1000319197-zhemchuzhiny-programmirovaniya-dzhon-bentli
Сергей
эт типа шутка была
Сергей
ньюфаги
Ryhor
без lodash правда const obj = { dota: { value: 'ok'}, cs: 'laja' }; const newObj = {dota: obj.dota.value, cs: obj.cs};
Это условная структура. Есть много полей, которые неизвестны. Но структура именно такая, что либо в объекте ключ и значение строка, либо либо значенние объект, в котором есть елюч value
stay
От куда такая любовь к константам?)
Если ты не собираешься изменять сущность, то всегда правильнее задать константу
Anonymous
Это условная структура. Есть много полей, которые неизвестны. Но структура именно такая, что либо в объекте ключ и значение строка, либо либо значенние объект, в котором есть елюч value
const array = [ { dota: { value: 'ok'}, cs: 'laja' }, { dota2: "bad", cs2: "lol" }, { k1: { value: 'false'}, cs: {value: 'ol'}, k3: {value: 'o_O'}, k4: "OK" }, ]; const objNormalize = (obj) => { const newObj = {}; Reflect.ownKeys(obj).forEach(key => { const val = obj[key]; try { if ( typeof val === "string" ) { newObj[key] = val; return; } if ( typeof (val.value) === "string" ) { newObj[key] = val.value; } } catch(e){} }); return newObj; }; const newArray = array.map(v => objNormalize(v)); console.log(newArray);
David
Спасибо =)
Не могу не предаставить альтернативу, хотя решения не отличаются.
David
let obj = { dota: { value: 'ok'}, cs: 'laja' }; for (key in obj) { obj[key] = obj[key].value !== undefined ? obj[key].value : obj[key]; }
David
?
Это я про количество строк. Потом пересмотрел, просто у тебя более универсальное решение.
Evgeniy 🍀
А нахера так сложно? чем Object.keys + reduce не устраивает?
Evgeniy 🍀
const dota = { dota: { value: 'ok'}, cs: 'laja' }; const unwrappedDota = Object.keys(dota).reduce((acc, k) =>({...acc, [k]: dota[k].value || dota[k]}),{})
Nikita
https://microsoftedgesupport.zendesk.com/hc/en-us/articles/360019102233
Nikita
Там новый едж потихоньку вылезает. Вон, и документация подъехала
Anonymous
Посоны. Дайте ревью на адекватность такого ТЗ. =)
Anonymous
На тех собесе дали вот такое: Опишите, что делает функция, и что здесь не так. function is_funny_function(data) { var i = data[0]; for (var j = 1; j < data.length; j++) { if (data[j] != i) { i = 0; break; } } if (i == 0) { i = Number(data[0]); for (var j = 1; j < data.length; j++) { if (Number(data[j]) == i + 1) { i += 1; } else { i = 0; break; } } if (i != 0) { return 1; } } else { return 1; } i = Number(data[data.length - 1]); for (var j = data.length - 2; j >= 0; j--) { if (Number(data[j]) != i + 1) { i = 0; break; } else { i += 1; } } if (i != 0) { return 1; } }
Max xbim 🌴
подальше бы таких афтаров слать имхо
Anonymous
Если у них так в конторе пишут и ты не прошел интервью, то считай тебе крупно повезло)
Не думаю, что так пишут. Но моя претензия в том, что мне даже не дали контекста. Х** его знает, что должна делать эта функция, когда я даже не вижу примеров её использования или тестов.
Anonymous
Я так подозреваю это чудо находит наидлинейшую монотонно возрастающшую последовательность в массиве, ну или что то вроде того)
Dika
Тогда там была бы рекурсия, не?
в этой функции три return, все они — return 1, так что эта функция не очень полезна
Славик
в редакторе с подсветкой или на листике вот так монотонно?
Anonymous
а в каком виде предоставили?
Именно в таком: Опишите, что делает функция, и что здесь не так. Ну, можно сказать, в редакторе.
Anonymous
С подсветкой, но без стат анализа.
Anonymous
А кажеться я понял, она чекает все ли элементы массива имеют одинаковое значение)
Anonymous
типа [1, 1, 1, 1] -> 1, [2, 2, 2] -> 1, [0, 1, 0] -> 0 (в данном случае undefined)
Anonymous
А вообще хз!!!!
Anonymous
Короч, у меня теория, что сама проблема высосана из пальца, и я зашёл сюда её проверить. Я сначала взялся это делать, но мотивации уже совсем не было, и я закончил интервью почти сразу.
Славик
Короч, у меня теория, что сама проблема высосана из пальца, и я зашёл сюда её проверить. Я сначала взялся это делать, но мотивации уже совсем не было, и я закончил интервью почти сразу.
функция возвращает единицу, если все элементы одинаковые и не равны нулю, либо если это арифметическая прогрессия с разностью 1 или -1
Dika
На тех собесе дали вот такое: Опишите, что делает функция, и что здесь не так. function is_funny_function(data) { var i = data[0]; for (var j = 1; j < data.length; j++) { if (data[j] != i) { i = 0; break; } } if (i == 0) { i = Number(data[0]); for (var j = 1; j < data.length; j++) { if (Number(data[j]) == i + 1) { i += 1; } else { i = 0; break; } } if (i != 0) { return 1; } } else { return 1; } i = Number(data[data.length - 1]); for (var j = data.length - 2; j >= 0; j--) { if (Number(data[j]) != i + 1) { i = 0; break; } else { i += 1; } } if (i != 0) { return 1; } }
Сигнатура функции: is_funny_function(data: Array<number>): undefined | 1; Если массив — [0], возвращается undefined. Если массив пустой или из одного элемента, отличного от 0, возвращается 1. Если элементы в массиве отличаются не более, чем на 1 (например, [4,3,2], [7,6,5]), возвращается 1, иначе undefined. Если отрицательные числа перемешиваются с положительными, тоже будет undefined.
Dika
это то, что пока нашел
Anonymous
Заебись, когда код запускать можно.
Славик
адекватное задание
Славик
и формулировка, и условия
Славик
но после этого задания обязательно надо спросить, каким образом оно было образовано
Славик
как до этого додумались
Славик
авось это просто реальный случай разработчика, которого после такого куска кода уволили, тогда и поржать можно
Славик
ну или так
Славик
в любом случае это двусторонний вопрос
Славик
для работодателя наличие вопроса покажет адекватность разработчика, а для разработчика ответ покажет адекватность конторы, в которой он собирается работать
Anonymous
На тех собесе дали вот такое: Опишите, что делает функция, и что здесь не так. function is_funny_function(data) { var i = data[0]; for (var j = 1; j < data.length; j++) { if (data[j] != i) { i = 0; break; } } if (i == 0) { i = Number(data[0]); for (var j = 1; j < data.length; j++) { if (Number(data[j]) == i + 1) { i += 1; } else { i = 0; break; } } if (i != 0) { return 1; } } else { return 1; } i = Number(data[data.length - 1]); for (var j = data.length - 2; j >= 0; j--) { if (Number(data[j]) != i + 1) { i = 0; break; } else { i += 1; } } if (i != 0) { return 1; } }
/// судя по Number от элементов массива, /// предполагается что data - это массив строк function is_funny_function(data) { var i = data[0]; for (var j = 1; j < data.length; j++) { if (data[j] != i) { i = 0; break; } } if (i != 0) { // если все элементы массива равны друг другу, и элменте массива не равен '0' return 1; } i = Number(data[0]); for (var j = 1; j < data.length; j++) { if (Number(data[j]) == i + 1) { i += 1; } else { i = 0; break; } } if (i != 0) { // если элемент[i+1] равент элементу[i]+1 return 1; } i = Number(data[data.length - 1]); for (var j = data.length - 2; j >= 0; j--) { if (Number(data[j]) != i + 1) { i = 0; break; } else { i += 1; } } if (i != 0) { // если элемент[i-1] равент элементу[i]+1 return 1; } } // проверим console.log( !!is_funny_function(['1','1','1']) ); console.log( !!is_funny_function(['1','2','3']) ); console.log( !!is_funny_function(['3','2','1']) ); console.log( !!is_funny_function(['3','2','3']) ); // false // тоже false вернет, хотя я думаю так не задумывалась. // ведь элементы равны console.log( !!is_funny_function(['0','0','0']) );
Anonymous
таким образом ошибка, в начале
Anonymous
когда функция возвращает ложь, если элменты равны и равны 0
Anonymous
таким образом ошибка, в начале
Отлично! Вы принаты на галеру!
Dmitry
Отлично! Вы принаты на галеру!
Теперь разгребайте наше легаси на ES2015
David
2 весла этому господину!
Anonymous
Да-да 100,000 строк еще написанных в 2005м
Славик
ну го перепишем этот код