let d = document, card = d.querySelectorAll(".card");
var current = null;
d.querySelectorAll(".btn").forEach(item => item.addEventListener("click", (e) => rotateCard(e)));
function rotateCard(e) {
// Is there another way to find the item?
current = e.target.parentElement.parentElement;
current.style.transform = 'scale(2)';
}
let d = document, card = d.querySelectorAll(".card");
var current = null;
d.querySelectorAll(".btn").forEach((item,j) => item.addEventListener("click", () => rotateCard(j)));
function rotateCard(idx) {
// Is there another way to find the item?
current = card[idx];
current.style.transform = 'scale(2)';
}
for (let year in data) {
let cache = {};
data[year] = data[year].filter(e=>{
if (cache[e.number]) return false;
return cache[e.number] = true;
});
}
i = num
, но не проходит первую проверку на i <= someLength
, в итоге в цикле ноль итераций, в результате которых в массив ничего не добавляется.someArr.push(undefined)
, то длина массива изменится. Так что в отсутствии работы цикла легко убедиться, проверив, что someArr.length === 0
function balance(arr1, arr2) {
let all = arr1.concat(arr2);
//all.sort((a, b) => a - b); //Для исключения одинаковых.
let all_sum = all.reduce((a,b)=>a+b,0);
let len = all.length;
let cnt = Math.floor(len * 0.5);
let arr_result = new Array(cnt); //Массив выбранных индексов
let idx_begin = 0; //Начальная глубина перебора (индекс в arr_result)
let sum_begin = 0; //Начальная сумма частично перебранных элементов
if (cnt === len * 0.5) { //Оптимизация
arr_result[0] = 0;
idx_begin = 1;
sum_begin = all[0];
}
let min_diff = all_sum; //Присваиваем какое-то заведомо большое число.
let arr_answer; //Итоговый ответ
//Проверяем следующий уровень глубины
//idx - глубина, sum - сумма всех элементов до этого
function check(idx, sum) {
if (idx === cnt) { //Конец перебора. Проверяем, подходит ли.
let diff = Math.abs((all_sum - sum) - sum);
if (diff < min_diff) { //Подходит
min_diff = diff; //Запоминаем новый лучший результат.
arr_answer = arr_result.slice(); //Копируем
}
return;
}
//Иначе идем дальше вглубь на следующий уровень.
let start = idx === 0 ? 0 : arr_result[idx-1] + 1;
let max = len - cnt + idx;
for(let i = start; i <= max; i++){ //Ключевой цикл алгоритма
//if (i > start && all[i] === all[i-1]) continue;
arr_result[idx] = i;
check(idx+1, sum+all[i]); //Рекурсия
}
}
check(idx_begin,sum_begin); //Начать перебор. Поехали!
arr1 = [];
arr2 = [];
//Фасуем полученный ответ по массивам уже в виде значений.
let j = 0;
all.forEach((e,i)=>{
if (i === arr_answer[j]) {
arr1.push(e);
j++;
} else arr2.push(e);
});
return {
arr1: arr1,
arr2: arr2,
sum1: arr1.reduce((a,b)=>a+b,0),
sum2: arr2.reduce((a,b)=>a+b,0),
}
}
var arr1 = [10, 300, 25, 75];
var arr2 = [50, 125, 500, 10];
balance(arr1, arr2);
var arr = [1,2,3,4,5,6,7,8,9,10,11,12]; //Исходный массив
//Формируем вспомогательный индексный массив
var i = 0;
var every_5 = arr.filter(e => (++i) % 5 === 0);
//Проверяем
every_5[0]; //Пятый элемент
every_5[1]; //Десятый элемент
var f = function() { alert(123) }; //записали в переменную f целую функцию.
f(); //вызвали функцию в переменной.
var f = alert;
f(123);
let counter = makeCounter();
function Map(){}
var data = new Map();
var get = "key1";
data.set(get, 1);
function Map(){}
Map.prototype.set = 123;
var data = new Map();
var get = "key1";
data.set(get, 1);
var json_str = `,{"name":"Adhi Kot","id":"379","nametype":"Valid","recclass":"EH4","mass":"4239","fall":"Fell","year":"1919-01-01T00:00:00.000","reclat":"32.100000","reclong":"71.800000","geolocation":{"type":"Point","coordinates":[71.8,32.1]}},{"name":"Adzhi-Bogdo (stone)","id":"390","nametype":"Valid","recclass":"LL3-6","mass":"910","fall":"Fell","year":"1949-01-01T00:00:00.000","reclat":"44.833330","reclong":"95.166670","geolocation":{"type":"Point","coordinates":[95.16667,44.83333]}}`;
var i = 0;
while((i=json_str.indexOf('"recclass":"',i))!==-1) {
i+=12;
let j = json_str.indexOf('"',i);
let val = json_str.substring(i,j);
console.log(val); //выводим очередное значение
}