Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.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
Javascript 如何使用递归函数将值推入数组?_Javascript_Arrays_Function_Recursion - Fatal编程技术网

Javascript 如何使用递归函数将值推入数组?

Javascript 如何使用递归函数将值推入数组?,javascript,arrays,function,recursion,Javascript,Arrays,Function,Recursion,我试图通过递归函数将值推入数组,但得到错误消息“uncaughttypeerror:array.push()不是函数”,尽管push()方法是常规数组方法。问题出在哪里 let someArr = ['a', 'b', 'c']; let someNum = 3; let fillArr = (arr, num) => x = (num != 0) ? fillArr(arr.push(num), num -1) : arr; console.log(fillArr(someArr,

我试图通过递归函数将值推入数组,但得到错误消息“uncaughttypeerror:array.push()不是函数”,尽管push()方法是常规数组方法。问题出在哪里

let someArr = ['a', 'b', 'c'];
let someNum = 3;

let fillArr = (arr, num) => x = (num != 0) ? fillArr(arr.push(num), num -1) : arr;

console.log(fillArr(someArr, someNum))

// expected output: ['a', 'b', 'c', 3, 2, 1];
// actual output: Uncaught TypeError: arr.push is not a function

逗号运算符经常被忽略;它可以提供一个很好的逃生舱:

const fillArr=
(arr,num)=>
(num==0
?arr
:fillArr((arr.push(num),arr,num-1));
//..............^^^^^^^^^^^^^^^^^^^^
填充(['a','b','c'],3)
//=>[“a”、“b”、“c”、3、2、1]
但是,您不应该使用
array#push
处理原始数组,因为它会对其进行变异(除非您有意!)

const arr=['a','b','c'];
fillArr(arr,3);
arr;
//=>[“a”,“b”,“c”,3,2,1]哦!
相反,您应该使用新阵列:

const arr=['a','b','c'];
常数fillArr=
(arr,num,nums=[])=>
(num==0
?arr.concat(nums)
:fillArr(arr,num-1,(nums.push(num,nums));
fillArr(arr,3);
//=>[“a”、“b”、“c”、3、2、1]
arr;
//=>[“a”、“b”、“c”]

德克塞先生所说的是正确的。如果你还想那样做。。 做点像

let fillArr = (arr, num) => x = (num != 0) ? fillArr(arr, num -1, arr.push(num)) : arr;

fillArr将接收someArr get num push,最后一个参数将被忽略

使用
concat
而不是
push
数组。push
返回一个int,并且在递归调用中将该int作为
arr
的参数传递。