Нашел интересную задачку, но решение до конца не смог довести.Написать функцию, которая на вход получает строку, которая содержит числа (пример: "56 65 74 100 99 68 86 180 90"). Необходимо отсортировать, используя "вес" каждого числа. "Вес" будет считаться как сумма всех цифр числа (вес 56 = 5 + 6;). Если вес у чисел одинаковый (например 180 (вес 9) и 90 (вес 9)), то их необходимо сравнить как строки. Результатом должна возвращаться строка, которая состоит из отсортированных чисел. Вот что я налопатил
function b(str) {
var sorter = str.split(' ');var arr;
sorter.sort(function(a,b) {
for(var i = 0;i<sorter.length;i++) {
arr = sorter[i].split('').reduce(function(a,b){a=+a;b=+b;return a+b});
}
console.log(sorter)
})
}
b('103 123 4444 99 2000')
Функция sort принимает в качестве аргумента callback-функцию, которая должна сравнивать два значения и возвращать отрицательное/положительное число или 0 в зависимости от результата. Нужно с осторожностью подходить к любой другой логике, описываемой внутри этой функции. Например, цикл в вашем случае абсолютно не нужен - он будет запускаться при каждом вызове callback-функции и выполнять одну и ту же работу.
Правильней будет вынести логику в функцию-helper, вызываемую только для сравниваемых значений.
Кроме того, обратите внимание на метод compare объекта Intl.Collator. Именно этот метод стоит использовать для сортировки строк, если это строки, состоящие из цифр (или символов латинского алфавита).
function strSum(s) {
return s.split("").reduce((a, b) => Number(a) + Number(b))
}
function sort(s) {
return s
.split(" ")
.sort((a, b) => {
const a1 = strSum(a)
const b1 = strSum(b)
return a1 !== b1
? a1 - b1
: new Intl.Collator().compare(a, b)
})
.join(" ")
}
console.log(sort('102 2000 10 4 51 302'));
console.log(sort('103 123 4444 99 2000'));
console.log(sort('11 31 56 4'));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пытаюсь выявить наличие определенного параметра в url:
Цель - отправить данные формы в Google Sheets для записи в соответствующие поляЯ использовал эту статью, но мой скрипт выдает ошибку:
Всем привет! Возникла задача: Существует n кол-во дивов с одним классом и надо выбрать именно первые 3 div с помощью JS или JQНикак не могу найти...