suggestions()
const arr = [
{title: 'test 1', props: [4,5]},
{title: 'test 3', props: [2,4]},
{title: 'test 2', props: [1,2,5]},
];
const props = {};
for (let i = 0; i < arr.length; i++) {
let obj = arr[i];
for (let j = 0; j < obj.props.length; j++) {
let p = obj.props[j];
if (!props.hasOwnProperty(p)) props[p] = [];
props[p].push(obj);
}
}
/* props :
{
"1": [{
"title": "test 2",
"props": [1, 2, 5]
}],
"2": [{
"title": "test 3",
"props": [2, 4]
}, {
"title": "test 2",
"props": [1, 2, 5]
}],
"4": [{
"title": "test 1",
"props": [4, 5]
}, {
"title": "test 3",
"props": [2, 4]
}],
"5": [{
"title": "test 1",
"props": [4, 5]
}, {
"title": "test 2",
"props": [1, 2, 5]
}]
}
*/
const now = new Date().getTime();
const LS = window.localStorage;
const key = "myBGTimerKey";
const saved = +LS.getItem(key);
if (saved) { // есть ключ
if (now < saved) {
// недостаточно времени прошло, ждём
} else {
// прошло достаточно.
// меняем фон
// если прошло слишком много времени, стираем ключ
// и пляшем, будто это первый визит.
}
} else {
// это первый визит
LS.setItem(key, now + 15 * 6e4); // через 15 минут заходите
}
const names = {
nullable: "inn,kpp,ogrn,organizationName,phone,email,webAddress,address,accreditationState,description"
.split(","),
dates: "ogrnIssueDate,accreditationDate,accreditationEndDate"
.split(","),
};
const data = {};
for(let i = 0; i < names.nullable.length; i++) {
const prop = names.nullable[i];
data[prop] = fields.hasOwnProperty(prop) ? fields[prop] : null;
}
for(let i = 0; i < names.dates.length; i++) {
const prop = names.dates[i];
data[prop] = fields.hasOwnProperty(prop) ? convertToDtoDate(fields[prop]) : null;
}
создать ссылку, при переходе по которой можно вручную вытащить токен
https://oauth.vk.com/authorize?...
) с последующим редиректом на https://oauth.vk.com/blank.html
.../blank.html
) и тогда сработать и вытащить оттуда из хэша access_token
. secure.*
методы можно вызывать только с сервера. Вы же пытаетесь через клиентский JS.secure
методы:В этой секции представлены административные методы, предназначенные для вызова от имени приложения с использованием стороннего сервера. Для использования этих методов необходимо применять специальную схему авторизации.
Помимо стандартных параметров, указанных в описании методов, к запросу необходимо добавлять параметр client_secret, содержащий значение из поля «Защищенный ключ» в настройках приложения.
Обратите внимание, тестовый режим при работе с secure-методами не поддерживается!
onerror
выполняется при наличии адблокера.document.cookie = "__adblocker=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
var setNptTechAdblockerCookie = function(adblocker) {
var d = new Date();
d.setTime(d.getTime() + 60 * 60 * 24 * 2 * 1000);
document.cookie = "__adblocker=" + (adblocker ? "true" : "false") + "; expires=" + d.toUTCString() + "; path=/";
};
var script = document.createElement("script");
script.setAttribute("async", true);
script.setAttribute("src", "//www.npttech.com/advertising.js");
script.setAttribute("onerror", "setNptTechAdblockerCookie(true);");
document.getElementsByTagName("head")[0].appendChild(script);
const div = document.createElement("div");
const nodes = document.body.childNodes;
while (nodes.length) div.appendChild(nodes[0]);
document.body.appendChild(div);
const counts = opis.reduce((p,c) => { p[c] = p[c] ? p[c]+1 : 1; return p;}, {});
const result = [];
for (let k in counts) if (counts[k] === 1) result.push(k);
function govnocode(obj) {
const result = {};
for( let key in obj) {
const val = obj[key];
if (Array.isArray(val)) {
result[key] = JSON.stringify(val);
} else {
result[key] = val;
}
}
return JSON.stringify(result);
}
govnocode({"key1": "value1", "key2": ["value1", "value2", "value3"]});
/*
{"key1":"value1","key2":"[\"value1\",\"value2\",\"value3\"]"}
*/