let old_console_log = console.log;
console.log = function() {
//Send ajax to server...
old_console_log('La-la-la! Hello there!');
// Call old fn
old_console_log(...arguments);
}
{7, 6, 8}
- так нельзя писать, ибо формат массива, но формально объект, парадокс.newObj = []; //Новая структура
for(let i=0;i<myObj.length;i++) { //Сканируем исходный массив
let o = myObj[i]; //Очередной объект
if (!newObj[o.category_id]) newObj[o.category_id] = [];
newObj[o.category_id].push(o.object_id);
}
function stopAllTimers() { //Остановить все таймеры
let id = setTimeout('1',0);
for(let i=id;i>=0;i--) clearTimeout(i);
}
setTimeout('console.log(123)',0); stopAllTimers(); //Всё ок
function repairCase(str, substr) {
if (!substr) return ''; //Empty string
//let arr = []; //Найденные результаты. Для наглядного дебага
let str_upper = str.toUpperCase();
let sub_upper = substr.toUpperCase();
let len = sub_upper.length;
let index = 0; //Стартовая позиция
let max_score = -1; //Максимальная оценка на совпадение по регистру.
let answer = ''; //То, что вернёт функция.
while (true) {
let result = str_upper.indexOf(sub_upper, index); //Ищем позицию очередного куска
if (result == -1) break;
let found = str.substr(result, len); //Найденный кусок
let score = 0; //Оценка совпадения
for(let i=0;i<substr.length;i++) { //Простой алгоритм:: чем больше совпадений, тем лучше.
if (substr[i] == found[i]) score++; //Увеличиваем оценку за каждое совпадение по символу.
}
if (score > max_score) { //Нашли более подходящий результат
max_score = score;
answer = found;
}
//arr.push({ pos: result, found: found, score: score });
index = result + 1;
}
//console.log(arr); //Смотрим, что под капотом
return answer;
}
repairCase('Hello World', 'hell'); // 'Hell'
repairCase('Алан Тьюринг', 'а'); // 'а'
repairCase('Дональд Кнут', 'Н'); // 'н'
repairCase('Линус Торвальдс', 'ндc'); // ''