Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Pass By Reference_Array Splice - Fatal编程技术网

Javascript 阵列拼接与重新分配到同一阵列

Javascript 阵列拼接与重新分配到同一阵列,javascript,arrays,pass-by-reference,array-splice,Javascript,Arrays,Pass By Reference,Array Splice,我正在解决leetcode上的一个问题,该问题要求我就地修改阵列,而不是创建一个新阵列然后返回。我曾想过使用Array.prototype.splice,但遇到了一些问题。所以我决定使用Array.prototype.slice并将值重新分配给现有数组。数组被作为引用传递,我认为这将做与.splice方法相同的事情,但这似乎没有发生 我找不到任何关于这两件事如何产生不同结果的文档。任何帮助都将不胜感激 const myMethod = (arr) => { for(let i = 0

我正在解决leetcode上的一个问题,该问题要求我就地修改阵列,而不是创建一个新阵列然后返回。我曾想过使用
Array.prototype.splice
,但遇到了一些问题。所以我决定使用
Array.prototype.slice
并将值重新分配给现有数组。数组被作为引用传递,我认为这将做与
.splice
方法相同的事情,但这似乎没有发生

我找不到任何关于这两件事如何产生不同结果的文档。任何帮助都将不胜感激

const myMethod = (arr) => {
   for(let i = 0; i < arr.length; i++){
      // my logic using arr.splice()
   }
}
const arr = [1,2,3,4,5];
myMethod(arr);
console.log(arr); // modified array
constmymethod=(arr)=>{
for(设i=0;i
其他用例:

const myMethod = (arr) => {
   for(let i = 0; i < arr.length; i++){
      // my logic using arr reassignment
     //  arr = arr.slice().....
   }
}
const arr = [1,2,3,4,5];
myMethod(arr);
console.log(arr); // outputs original array
constmymethod=(arr)=>{
for(设i=0;i
也许你应该尝试使用
filter()
。然后,您甚至不需要为
循环运行
。筛选器返回与给定条件匹配的所有元素的数组

const myMethod = (arr) =>  {
     return arr.filter(entry => {
            // filter by whatever condition you like
            // example: entry > 2 && < 10
     }  
 }
constmymethod=(arr)=>{
返回arr.filter(条目=>{
//按你喜欢的条件过滤
//示例:条目>2&<10
}  
}

函数的参数类似于局部变量。修改它绝对不会影响函数调用时传入的任何内容。@Pointy Hm。感谢您提出这个问题。
array.splice
在这种情况下如何工作?除了@Pointy编写的内容外,如果更改数组的一个值,它将ange在函数之外,但如果修改变量arr,只需替换其引用,而不更改原始变量array@OmriAttiya哦,我明白了。谢谢。如果不使用
拼接
,如何在适当的位置修改某些内容?我不完全理解您的问题,我想在适当的位置更新阵列,以便如果我尝试记录方法外部的数组,在调用该数组上的方法后,我应该能够看到更新的结果。