Promise.all(
id_contacts.map(id =>
axios
.post('api/add_contact', { id })
.then()
.catch(console.error)
)
)
.then(resultsArray => {
axios.post('api/bizproc', { contacts: resultsArray });
})
.catch(console.error);
[warning] запросы контактов отправятся почти одновременно / параллельно, что может быть проблемой при большом их числе. Поэтому стоит продумать последовательные пачки параллельных запросов, если контактов там может быть больше, скажем, 10. username.github.io
, где username – точное имя вашего аккаунта или организации, в которой это репоindex.html
main
https://username.github.io
this
:const G = {
boo: function() {
console.log(this.x);
},
};
function A() {
let x = 'XXX';
const obj = { x, extraparams: { overwriteFunc: () => {}, }, };
// перезаписывание. Если typeof obj[prop] == 'function'
obj.extraparams.overwriteFunc = G.boo.bind(obj);
// вызов
obj.extraparams.overwriteFunc();
}
A(); // 'XXX'
let
и const
объявляют переменные/константы с блочной областью видимости.let a
делает её видимой только внутри фигурных скобок do { }
.a
. var e;
var r = t.length;
var n = '';
var i = 0;
var s = 0;
var a = 0;
// for (; i < r; ) {
while (i < r) {
s = t.charCodeAt(i);
if (s < 128) {
n += String.fromCharCode(s);
i++;
} else {
if (s > 191 && s < 224) {
// это заглавные кириллические буквы в Win1251
a = t.charCodeAt(i + 1);
// дальше код оборвался, приведён не полностью
}
}
}
фрагмент кода приведёт не полный, поэтому и «распаковка» не полна. const lsKey = 'todo items';
// в самом начале посмотреть, есть ли сохранённые данные?
const data = JSON.parse(localStorage.getItem(lsKey)) || [];
// добавление нового
const item = { id: 123, name: 'aaa', title: 'bbb' };
data.push(item);
localStorage.setItem(lsKey, JSON.stringify(data));
if .. else if
объединены проверки двух независимых переменных.if (Car.started === false && Car.fuel > 0) {
// и строго равно false, и fuel больше 0
} else if (Car.started && Car.fuel <= 0) {
// сюда попадают не прошедшие первый if
// и к тому же соответствующие второй проверке started && fuel <= 0
}
// никуда не попадут:
// Car.started = undefined (не строго false, но и не переводится в true
// Car.started === false, но и fuel > 0
111-234-567 xx
123-334-567 yy
123-456-777 zz
swa()
забыли привести, как вы начали её писать?target
– элемент, по которому кликнули. В данном случае это тег <a>
parent
) – это div. А в нём уже найти элемент H3:const title = event.target.parent.querySelector('h3').innerText;
redraw_table()
в коллбэке по успешному завершению выполнения запроса. id
как особый, и добавлять к нему в массив match
другие похожие — все id
с одинаковыми прочими значениями равноправны. Поэтому предлагаю как результат просто массивы, где собраны id
с совпадающими свойствами.id
, упорядоченных по алфавиту, и значений. Этот отпечаток будет одинаков у совпадающих объектов, несмотря на разные id
(и разный порядок ключей).{ id, hash }
, затем составляем «словарь», где ключи – хэши, а значения – Set'ы с id
, у которых оказался одинаковый хэш. Set'ы – чтобы не повторялись одинаковые id
.const arr = [
{ id: 1, we: 'cn', le: null },
{ id: 2, le: null, we: 'cn' },
{ id: 3, we: 'cn', le: 'car' },
{ id: 1, we: 'cn', le: null },
];
const dict = arr
.map(({ id, ...obj }) => {
const keys = Object.keys(obj).sort();
const ordered = keys.reduce((acc, c) => {
acc[c] = obj[c];
return acc;
}, {});
return { id, hash: JSON.stringify(ordered) };
})
.reduce((acc, c) => {
(acc[c.hash] ??= new Set()).add(c.id);
return acc;
}, {});
Object.values(dict).map(s => [...s]); // [ [1, 2], [3] ]
H
определяет как раз оттенок. Установите опытным путём в Фотошопе, какой диапазон значений H
можно отнести к «оттенкам синего (голубого)». S
(насыщенность) и V
(яркость) не влияют на «цвет» оттенка.