如何改变传递给函数的数组,而不需要在javascript中迭代它的项
How to change an array passed to a function without iterating through its items in javascript
我有一个函数,它接受一个数组作为第一个参数。在这个函数中,构造第二个数组。我希望传递的数组被新数组替换。是否有可能改变原始数组,而不改变其项目一个接一个?
var myFunct=function(arr){
var arr2=[];
for(var i=0;i<arr.length;i++)
arr2.push(2 * arr[i]);
arr=arr2;
}
var arr=[1,2,3];
myFunc(arr);
console.log(arr);
//displays [1,2,3] not the desired [2,4,6];
如果我改变函数,使arr
的所有项分别改变,则函数按我想要的方式运行。为什么会这样呢?它是一种方式来改变arr
通过简单地分配给新的数组?
//works fine
var myFunct=function(arr){
var arr2=[];
for(var i=0;i<arr.length;i++)
arr2.push(2 * arr[i]);
//arr=arr2;
for(var i=0;i<arr.length;i++)
arr[i]=arr2[i];
}
您是否需要就地改变?为什么不直接返回新数组呢?
var arr = [1, 2, 3];
function myFunc(a) {
return a.map(item => item*2);
}
arr = myFunc(arr);
console.log(arr); // [2, 4, 6]
直接回答:不,你不能那样做。函数内的arr
是指函数内的局部变量。为了改变函数之外的数组的内容,您需要单独更新其条目。
相关文章:
- Javascript不需要的关闭行为
- 使用一个Javascript函数提交多个表单可以在FF中工作,而不需要其他浏览器
- Jquery/javascript:加载页面时不需要的重复函数
- 为什么Java代码需要编译,而JavaScript代码不需要
- 不需要的Javascript效果:原型在实例之间共享闭包
- 如何删除javascript中的节点,而不需要父节点为null
- 如何从加载到javascript中的导出XML数据中删除不需要的空格
- 如何重新编码我的jQuery/JavaScript函数,使其更通用,不需要唯一标识符
- 我需要在不使用JavaScript的情况下验证我的表单
- Javascript/JQuery 中的匿名函数的目的是什么,当我似乎不需要它时
- Javascript split() Regex 表达式在 Chrome 中返回不需要的逗号
- Javascript 文件以不需要的顺序加载
- 删除不需要的javascript和css是否包括减轻网页加载时间
- 在 JavaScript 中使用 XMLSerializer 和 IE 时,SVG 标记上不需要的命名空间
- JavaScript RegExp 匹配组需要不需要的括号
- 如果,或者,虽然不是..需要 JavaScript 帮助
- 在 HTML 中使用 Javascript/jQuery 的 SELECT 中几乎不需要更正
- 当函数不需要 Javascript 时访问参数
- 我需要在AJAX之前学习Javascript,还是AJAX不需要Javascript知识
- 是否可以使用HTML/CSS进行简单的计算,但不需要JavaScript或后端