#javascript #array-map
Вопрос:
let Map = Array.prototype.map
let strResult = Map.call("Muhammad asif", (x) => {
return x.charCodeAt(0);
})
console.log(strResult)
Какова связь между вызовом и картой и каков ее процесс? почему здесь используется charCodeAt(0)?
Комментарии:
1. Вы читали
Function.prototype.call
2. Да, я знаю об этом методе @jabaa, но я не могу понять map.call, и что такое charCodeAt
3. Ты знаешь об
Function.prototype.call
этом, но не можешь понятьMap.call
? В этом нет никакого смысла. Это одно и то же.Map
это функция.Map.call
это функцияFunction.prototype.call
, которая определена в прототипе всех функций. Вы можете прочитать оcharCodeAt
4. Вы можете выполнить поиск
mdn
«поисковый запрос» в вашей любимой поисковой системе для всех вопросов о JavaScript, напримерmdn charCodeAt
,mdn call
,mdn map
. Некоторые браузеры даже поддерживают добавление MDN в качестве внутренней поисковой системы.
Ответ №1:
- Какова связь между
call
иmap
?
- Как сказал @jabaa в разделе комментариев,
map
это функция.call
тоже функция. map
является частьюArray
объекта иcall
является частьюFunction
объекта.- Это значит,
- вы должны использовать
map
в массиве. Например:[1, 2, 3].map()
, - и использовать
call
на функции. Например:myFunction.call()
- вы должны использовать
- Как проходит его процесс?
Array.prototype.map
это функция, которую вы помещаете в вызываемую переменную Map
. Вы не можете просто использовать его как обычную функцию, потому что он предназначен для использования с массивом. Вы можете использовать его вот так:
const myArray = [1, 2, 3]
myArray.Map = Map // put your `Map` variable into a real array
myArray.Map(number => console.log(number))
или
Map.call("your array or iterable things goes here", (itemInArray) => {console.log(itemInArray)});
/* first parameter of `call` will be used as `this`. `this` in `Array.prototype.map` means an array. CMIIW */
Что то же самое, что:
const myString = "your array or iterable things goes here"
for(let index = 0; index < myString.length; index ){
const itemInArray = myString[index]
console.log(itemInArray)
}
- Почему
charCodeAt(0)
используется здесь?
Я не знаю. Это ваш код, и тот, кто должен ответить на этот вопрос, — это вы сами. charCodeAt
не является обязательной функцией для map
или call
для работы. К вашему сведению, charCodeAt
это также функция, которая возвращает целое число от 0 до 65535, представляющее единицу кода UTF-16 с заданным индексом. Так,
"abc".charCodeAt(0) // will show UTF-16 representation of the 0th character of "abc"
"abc".charCodeAt(1) // will show UTF-16 representation of the 1st character of "abc"
"abc".charCodeAt(2) // will show UTF-16 representation of the 2nd character of "abc"
Ответ №2:
Здесь вы можете найти некоторое объяснение https://forum.freecodecamp.org/t/explain-array-prototype-map-call/165936/7
При таком подходе вы можете использовать map
функцию для строки, как это было в массиве.
charCodeAt
является функцией, вызываемой для каждого элемента данной строки. Он возвращает представление в Юникоде (число) переданного символа. Вы можете передать любую другую функцию, принимающую строки, вместо нее.
Например:
let Map = Array.prototype.map
let strResult = Map.call("Muhammad asif", (x) => {
return x x
});
console.log(strResult)
приведет к
[«ММ», «уу», «чч», «аа», «мм», «мм», «аа», «дд», » «, «аа», «сс», «ii», «ff»]