Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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_Multidimensional Array - Fatal编程技术网

用其他数组中的元素替换Javascript数组元素

用其他数组中的元素替换Javascript数组元素,javascript,multidimensional-array,Javascript,Multidimensional Array,我有以下使用Java数组的简单代码 var fruits = [["Banana", "Orange", "Apple", "Mango"]]; var names = ["Adam", "Emma", "Joe", "David"]; var newArray=[]; for (var i = 0 ; i < 4 ; i++){ newArray[i] = fruits[0]; // Copy fruits[

我有以下使用Java数组的简单代码

  var fruits = [["Banana", "Orange", "Apple", "Mango"]];
  var names  =  ["Adam", "Emma", "Joe", "David"];                
  var newArray=[];

  for (var i = 0 ; i < 4 ; i++){      
    newArray[i] = fruits[0];    // Copy fruits[] into newArray[] 
    newArray[i][1] = names[i];  // Then replace the 2nd element with names[]    
  } 
然而,我得到了这个最终的结果,却不知道为什么

newArray[0] = ["Banana", "David" , "Apple", "Mango"]
newArray[1] = ["Banana", "David" , "Apple", "Mango"]
newArray[2] = ["Banana", "David" , "Apple", "Mango"]
newArray[3] = ["Banana", "David" , "Apple", "Mango"]
我对JS还很陌生,所以我想这可以归结为一些简单的事情,但在这个阶段,这是一堵无法逾越的砖墙。非常感谢您的帮助。

问题是:

newArray[i] = fruits[0];    // Copy fruits[] into newArray[] 
newArray[i]
不是
fruits
中第一项的副本,而是对内存中相同对象的另一个引用。因此,当您更改
newArray[i]
时,您也会更改
fruits[0]
,并且您还会更改对
fruits[0]
具有相同引用的任何其他变量,即
newArray
中的每个项目

在每次迭代中显式克隆
结果[0]

var=[
[“香蕉”、“橘子”、“苹果”、“芒果”]
];
变量名称=[“亚当”、“艾玛”、“乔”、“大卫”];
var newArray=[];
对于(变量i=0;i<4;i++){
新数组[i]=[…水果[0]];
newArray[i][1]=名称[i];
}

log(newArray)Java不是JavaScript-清楚区分很重要。很遗憾,[…fruits[0]]在我的网站上发出语法错误,我应该注意我是通过Google Apps JavaScript运行的,所以可能还不支持spread语法。你应该清楚你的问题有哪些限制。您可以使用
slice
而不是spread语法,请参见编辑(或者您可以使用Babel自动向下传输到ES5,允许您使用最新和最好的语言版本编写,这对更大的项目非常有用)我最后使用了您的示例,但结果是[0]。slice()而不是[…fruits[0]]
newArray[i] = fruits[0];    // Copy fruits[] into newArray[]