let s = "12345"
let m = Array.from(s.slice(2), (_, i) => s.slice(i, i+3))
console.log(m)

Выход: ["123", "234", "345"]

Я новичок в JavaScript. Может кто-нибудь объяснить, как этот код работает шаг за шагом? Особенно эта часть здесь: (_, i) => s.slice(i, i+3)

-2
Monsieur Propre 20 Дек 2019 в 18:58

1 ответ

Array.from позволяет получить массив из другой "коллекции вещей".

Первый аргумент - это подстрока, начинающаяся с индекса 2, то есть «345». Array.from примет это как набор символов: «3», «4», «5».

Второй аргумент - это функция, которая будет применяться к каждому объекту, полученному из первого. И эта функция принимает 2 аргумента, первый из которых является значением, полученным из первого аргумента, а второй - индекс текущей итерации. Таким образом, значения «3», «4,« 5 »создаются по очереди:« 3 »с индексом 0,« 4 »с индексом 1,« 5 »с индексом 2. Видите? Пары ('3', 0), ('4', 1), ('5', 2). Но данная функция просто игнорирует свой первый аргумент, используя _ для обозначения того факта, что это будет игнорироваться (что было получено из первого аргумента from), и в основном вызывает str.slice(i,i+3) для всех значения i в 0, 1, 2. Наконец, получаются 3 строки «123», «234» и «345».

Попробуйте с этим:

var str="12345"
var m = Array.from(str.slice(2), (x,i)=>"Got ("+x+","+i+") and compute \""+str+"\".slice("+i+","+(i+3)+")")
console.log(m)
1
Jean-Baptiste Yunès 20 Дек 2019 в 16:19