Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Map+;Rest操作符(JavaScript)_Javascript_Arrays_Function_Ecmascript 6 - Fatal编程技术网

使用Map+;Rest操作符(JavaScript)

使用Map+;Rest操作符(JavaScript),javascript,arrays,function,ecmascript-6,Javascript,Arrays,Function,Ecmascript 6,这个函数执行我希望它执行的操作,但不是我期望它执行的操作。我希望它创建两个数组,因为…args创建了一个传递参数的数组,map()对它连接到的数组的每个值都执行一些操作,并将结果存储在一个新数组中。有人能告诉我为什么这个函数不能创建两个数组吗 let practiceFunc=(…args)=>{ 设arr=args.map((e)=>{ 返回e+1 }) 返回arr; } 控制台日志(practiceFunc(1,2,3)); 文件编写(practiceFunc(1,2,3))它确实创建了

这个函数执行我希望它执行的操作,但不是我期望它执行的操作。我希望它创建两个数组,因为…args创建了一个传递参数的数组,map()对它连接到的数组的每个值都执行一些操作,并将结果存储在一个新数组中。有人能告诉我为什么这个函数不能创建两个数组吗

let practiceFunc=(…args)=>{
设arr=args.map((e)=>{
返回e+1
})
返回arr;
} 
控制台日志(practiceFunc(1,2,3));

文件编写(practiceFunc(1,2,3))
它确实创建了两个数组,但您只能使用一个-
arr
,即从函数返回的数组<代码>args也被使用,但正如
映射中使用的数组一样
-您可以很容易地忽略它并使用
参数
(但是,这需要一个ES5函数,因为箭头函数没有其orwn
参数
,您必须使用
对象提取值。值
):

let practiceFunc=function(){
设arr=Object.values(arguments).map((e)=>{
返回e+1
});
返回arr;
}
console.log(practiceFunc(1,2,3));

文件。书写(practiceFunc(1,2,3))欢迎来到SO!“不创建两个数组”是什么意思。你到底希望得到什么样的输出?@ggorlen我希望得到一个以数字1,2,3为元素的数组,然后由包含元素2,3,4
args
的map数组创建的数组是
[1,2,3]
数组,
arr
[2,3,4]
数组。两者都会被创建,并且只返回
arr
。@ggorlen是的,谢谢jack帮助我理解了这一点,你刚刚在我的大脑中固化了它哦,是的,你是对的,它就是这样做的,这就是函数能够使用map()方法的原因。我在freeCodeCamp的es6部分了解到了这一点。你确定我需要es5功能吗?@iaLearningToCode这是一项以15声誉解锁的特权,所以继续问一些好问题,你很快就会解锁该特权。当我问你是否确定需要es5功能时,我并不是有意不尊重你。实际上你是对的“箭头函数在其作用域中没有自己的参数绑定;调用它们时不会创建arguments对象。”没关系@iaLearningToCode-提问是最好的学习形式。你可以很容易地忽略它并使用
参数
”-这毫无意义。rest参数语法没有问题,arguments对象过时是有原因的。您应该使用
Array.from()
(尊重顺序)而不是
Object.values()
。但无论如何,它都是无用的——它们都创建了一个临时数组,所以在这里什么也得不到。