需要关于 Array.prototype.map 和 map.call( ) 的解释,这是如何工作的?
Need Explanation about Array.prototype.map and map.call( ), how this is working?
let Map = Array.prototype.map
let strResult = Map.call("Muhammad asif", (x) => {
return x.charCodeAt(0);
})
console.log(strResult)
call和map是什么关系,过程是怎样的?为什么这里使用 charCodeAt(0)?
- What is the relation between
call
and map
?
- 正如@jabaa在评论区所说,
map
是一个函数。 call
也是一个函数。
map
是 Array
对象的一部分,call
是 Function
对象的一部分。
- 意思是,
- 你应该在数组上使用
map
。例如:[1, 2, 3].map()
、
- 并在函数上使用
call
。例如:myFunction.call()
- How is its process?
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)
}
- Why
charCodeAt(0)
used here?
我不知道。那是你的代码,应该回答这个问题的是你自己。 charCodeAt
不是 map
或 call
工作所必需的函数。仅供参考,charCodeAt
也是 returns an integer between 0 and 65535 representing the UTF-16 code unit at the given index 的函数。所以,
"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"
在这里你可以找到一些解释https://forum.freecodecamp.org/t/explain-array-prototype-map-call/165936/7
通过这种方法,您可以在字符串上使用 map
函数,因为它是一个数组。
charCodeAt
是对给定字符串的每个元素调用的函数。它 returns 传递字符的 Unicode 表示(数字)。您可以传递任何其他字符串接受函数而不是它。
例如:
let Map = Array.prototype.map
let strResult = Map.call("Muhammad asif", (x) => {
return x + x
});
console.log(strResult)
结果为
["MM", "uu", "hh", "aa", "mm", "mm", "aa", "dd", " ", "aa", "ss", "ii", "ff "]
let Map = Array.prototype.map
let strResult = Map.call("Muhammad asif", (x) => {
return x.charCodeAt(0);
})
console.log(strResult)
call和map是什么关系,过程是怎样的?为什么这里使用 charCodeAt(0)?
- What is the relation between
call
andmap
?
- 正如@jabaa在评论区所说,
map
是一个函数。call
也是一个函数。 map
是Array
对象的一部分,call
是Function
对象的一部分。- 意思是,
- 你应该在数组上使用
map
。例如:[1, 2, 3].map()
、 - 并在函数上使用
call
。例如:myFunction.call()
- 你应该在数组上使用
- How is its process?
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)
}
- Why
charCodeAt(0)
used here?
我不知道。那是你的代码,应该回答这个问题的是你自己。 charCodeAt
不是 map
或 call
工作所必需的函数。仅供参考,charCodeAt
也是 returns an integer between 0 and 65535 representing the UTF-16 code unit at the given index 的函数。所以,
"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"
在这里你可以找到一些解释https://forum.freecodecamp.org/t/explain-array-prototype-map-call/165936/7
通过这种方法,您可以在字符串上使用 map
函数,因为它是一个数组。
charCodeAt
是对给定字符串的每个元素调用的函数。它 returns 传递字符的 Unicode 表示(数字)。您可以传递任何其他字符串接受函数而不是它。
例如:
let Map = Array.prototype.map
let strResult = Map.call("Muhammad asif", (x) => {
return x + x
});
console.log(strResult)
结果为 ["MM", "uu", "hh", "aa", "mm", "mm", "aa", "dd", " ", "aa", "ss", "ii", "ff "]