Я запускаю этот фрагмент в JS Bin:
let array1 = [1, 4, 9, 16]
let array2=[1, 4, 9, 16]
const map1=array2.map(x=>x*2)
console.info(map1)
//Output is:[2, 8, 18, 32]
const map2 = array2.map((y,x) => x * 2)
console.info(map2)
//Output is: [0, 2, 4, 6]
Как первый параметр влияет на вывод функции карты?
Редактировать: Два точных ответа. Просто объясню, почему я задал этот вопрос. Благодаря SO теперь я знаю, что первый параметр - это значение индекса, а второй - индекс массива. Я видел это в примере: map((_,x)=>itemName+=x)
. Если я передаю только один параметр, он превратится в itemName+valueAtTheIndex
, однако, если я передам два аргумента и использую второй, он превратится в itemName1,itemName2,.....
.
Очень удобно!
В ваших двух фрагментах вы называете «x
» двумя разными вещами. В первом x
- это аргумент первый функции array.map()
, который будет содержать каждое значение, а во втором фрагменте x
- это аргумент второй, и он будет содержать каждый массив показатель.
В первом случае x
будет содержать значения массива (что вы и ожидали), а во втором случае x
будет содержать значения 0,1,2,3, которые дают результат, который вы получили.
Идентификатор _
не имеет особого значения, но является допустимым идентификатором аргумента. Вы могли бы назвать его y
и получили бы тот же результат.
Чтобы назвать первый аргумент, вам нужен действительный идентификатор. 2 не является допустимым именем идентификатора, а _ -.
В порядке. Я использовал y как параметр, но результат тот же.
@SanSolo то же самое, что и что? Я не совсем понимаю, что вы сделали и какой результат получили. Дело в том, используете ли вы первый или второй параметр в своих вычислениях, имя не имеет значения.
Первый аргумент в функции карты - это текущее значение в вашем массиве, а второй столбец - это индекс.
_ используется для игнорирования первого столбца.
В этом есть смысл, но если это игнорируется, почему это дает другой результат?
Вы выполняете операцию с индексом массива, а не со значениями. Во-первых, вы использовали значения, а во-вторых, вы использовали индекс, т.е. 0,1,2,3 и т. д.
благодаря. Сегодня я исчерпал лимит голосов. Я проголосую за твой ответ, как только он сбросится
_
не влияет на вывод .map
. Это аргумент, который вы используете для вычисления, который влияет на результат.
.map(entry, index)
- это синтаксис, когда вы используете два аргумента в функции map
.
let arr = [1, 4, 9, 16]
const ret = arr.map(x => x * 2)
console.info(ret)
// Output is: [2, 8, 18, 32]
// here, x is array index - 0, 1, 2, 3
const ret = arr.map((_, x) => x * 2)
console.info(ret)
// Output is: [0, 2, 4, 6]
// try it with `_`
// You'll get the desired output
const ret = arr.map((_, x) => _ * 2)
console.info(ret)
// Output is: [2, 8, 18, 32]
Итак, второй параметр - это индекс, а первый параметр - это значение этого индекса?
@SanSolo Да. Когда вы используете один параметр, вы используете только значение индекса, а второй параметр игнорируется. Когда вы используете два параметра, вы можете использовать как значение индекса, так и индекс.
Но если я вызываю это, например, с помощью map (2, x), ничего не происходит