Javascript 阵列拼接与重新分配到同一阵列
我正在解决leetcode上的一个问题,该问题要求我就地修改阵列,而不是创建一个新阵列然后返回。我曾想过使用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
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哦,我明白了。谢谢。如果不使用拼接
,如何在适当的位置修改某些内容?我不完全理解您的问题,我想在适当的位置更新阵列,以便如果我尝试记录方法外部的数组,在调用该数组上的方法后,我应该能够看到更新的结果。