Number()
при вызове как функции, конвертирует аргумент в численный тип. Если не получается, возвращает NaN
(Not A Number) – специальное значение, которое при конвертации в булев даёт false
. (! Number(value))
сработает когда переданное не перевести в число, или когда число 0
.Number()
довольно строг с конвертацией в число, по сравнению даже с parseInt()
:parseInt("123HabraHabr") // 123
Number("123HabraHabr") // NaN
Number()
проглотил бы как число, но при этом она содержала код, который JS как-то интерпретирует. Типа '123 & alert("Habr!")'
– но нет, через Number()
это не пролезет, увы. reduce()
в передаваемом объекте добавьте поле для передачи индекса баннера.i
и сохранять его в объекте;const container = document.querySelector(".js-cards");
const cards = [...container.children].reduce(function (obj, item, i) {
if ("card" in item.dataset) {
obj[item.dataset.card] = (obj[item.dataset.card] || []).concat(item);
obj["all"] = (obj["all"] || []).concat(item);
if (obj.hasOwnProperty('bannerIndex')) delete obj.bannerIndex;
} else {
if (! obj.hasOwnProperty('bannerIndex')) obj.bannerIndex = i;
obj["banners"] = (obj["banners"] || []).concat({ item: item, index: obj.bannerIndex });
}
return obj;
}, {});
console.log(cards);
.then()
добавьте что-то типа .catch(err => console.error(err))
;
util.status('test')
.then(...)
.then(() => setTimeout(relOnline, 500)
.catch((err) => console.error(err))
input
.disabled
, чтобы не хотелось в него что-то вписать.resault
и resaultDouble
.// круглые скобки - индекс 0
// квадратные - индекс 1
// строка:
( ( [ ] [ ] ) )
// скобка - массив
( 0,
( 0, 0
[ 0, 0, 1,
] 0, 0,
[ 0, 0, 1,
] 0, 0,
) 0,
) пустой массив
При закрывающей скобке проверять, её ли пара последняя в массиве. В конце должен остаться пустой массив.const path = require('path');
module.exports = {
//...
resolve: {
alias: {
Utilities: path.resolve(__dirname, 'src/utilities/'),
Templates: path.resolve(__dirname, 'src/templates/')
}
}
};
...// было:
import Utility from '../../utilities/utility';
// стало:
import Utility from 'Utilities/utility';
price
не является стандартным для HTML5. Лучше использовать data-атрибуты, чтобы держать какие-то данные в разметке:option.getAttribute('price')
fiddle const numSort = (arr) => arr.reduce(
(acc, c, i) => {
if (Number.isFinite(c)) arr.splice(i, 1, acc.shift());
return acc.length ? acc : arr;
},
arr.filter((el) => Number.isFinite(el)).sort((a, b) => b - a)
);
numSort([2, "No", 6, 8, "", 1, "No", "", 10])
// [ 10, "No", 8, 6, "", 2, "No", "", 1 ]
arr.filter((el) => Number.isFinite(el)).sort((a, b) => b - a)
эта строка отбирает из массива только числа и сортирует их по убыванию. Получившийся сортированный массив чисел используется в reduce() как аккумулятор.reduce()
проходит по всем элементам исходного массива. Если встретилось число (не важно, какое), его заменяет на очередное (по убыванию) из полученного выше сортированного массива. Наконец, если массив с числами опустел – возвращается полностью обработанный массив.{
const arr = [{ACCOUNT: 2, PAY: "bla"},
{ACCOUNT: "No", PAY: "bla"},
{ACCOUNT: 6, PAY: "bla"},
{ACCOUNT: 8, PAY: "bla"},
{ACCOUNT: "", PAY: "bla"},
{ACCOUNT: 1, PAY: "bla"},
{ACCOUNT: "No", PAY: "bla"},
{ACCOUNT: "", PAY: "bla"},
{ACCOUNT: 10, PAY: "bla"}];
const nums = arr.filter((el) => Number.isFinite(el.ACCOUNT)).sort((a, b) => b.ACCOUNT - a.ACCOUNT);
const result = arr.map((el) => Number.isFinite(el.ACCOUNT) ? nums.shift() : el);
console.log(result);
}
(new Date()).toLocaleString('en-US', {timeZone: 'Asia/Novosibirsk', dateStyle: 'medium', timeStyle: 'long'});
// "Jan 29, 2021, 12:22:32 AM GMT+7"
(new Date()).toLocaleString('ru-RU', {timeZone: 'Asia/Novosibirsk', dateStyle: 'short', timeStyle: 'full'});
// "29.01.2021, 00:28:51 Новосибирск, стандартное время"
(new Date()).toLocaleString('en-US', {timeZone: 'Asia/Tokyo', dateStyle: 'medium', timeStyle: 'long'});
// "Jan 29, 2021, 2:31:16 AM GMT+9"
(new Date()).toLocaleString('ru-RU', {timeZone: 'Asia/Tokyo', dateStyle: 'medium', timeStyle: 'full'});
// "29 янв. 2021 г., 02:31:58 Япония, стандартное время"
let amount_RUR = 1000; // тысяча рублей
let BTC_USD = 31565.60; // сколько USD за 1 BTC
let USD_RUR = 75.04; // сколько рублей за 1 USD
let margin = 0.05; // моя комиссия от вашей сделки 5%
let result = (1 - margin) * amount_RUR / USD_RUR / BTC_USD; // вам
let fee = margin * amount_RUR / USD_RUR / BTC_USD; // мне