Javascript 为什么这个数组生产者代码不';它不起作用吗?

Javascript 为什么这个数组生产者代码不';它不起作用吗?,javascript,arrays,Javascript,Arrays,我使用了以下代码从两个数组生成新数组: var arr1=[['wo','ss',['er','me',['lo','to']; var arr2=['mine','yours',['from','theme']; var arr3=[]; var-temp=[]; //这将是一个数组数组,每个索引都是arr2+arr1中的一个索引 var-end=[]; arr1.forEach(功能(项目){ 温度=arr2; 温度推送(项目); 结束。推送(温度); }) console.log(end

我使用了以下代码从两个数组生成新数组:

var arr1=[['wo','ss',['er','me',['lo','to'];
var arr2=['mine','yours',['from','theme'];
var arr3=[];
var-temp=[];
//这将是一个数组数组,每个索引都是arr2+arr1中的一个索引
var-end=[];
arr1.forEach(功能(项目){
温度=arr2;
温度推送(项目);
结束。推送(温度);
})
console.log(end)
在您的代码中方法将把值推送到
arr2
,在每次迭代中更新数组(因为
temp
引用数组
arr2

使用方法生成新的连接数组,尽管可用于生成数组

var arr1=[
['wo','ss'],
['er','me'],
['lo','to']
];
var arr2=[
[‘我的’、‘你的’],
[“来自”,“主题”]
];
var end=arr1.map(函数(项){
返回arr2.concat([项目]);
})

console.log(JSON.stringify(end))
您必须为每次迭代克隆arr2,每次都将temp定义为新数组

var arr1 = [['wo','ss'],['er','me'], ['lo','to']];
var arr2 = [['mine','yours'],['from', 'theme']];
var arr3 = [];

var end = [] //this will be an array of arrays that every index is arr2 + one index from arr1
arr1.forEach(function(item) {
  var temp = arr2.slice();
  temp.push(item);
  end.push(temp);
})

console.log(end);

此代码如您所期望的那样工作

您想要什么?当您使它们指向内存中的同一位置时,它是对同一对象的引用。因此,当您通过执行
temp.push(arr2)
来更改温度时,您也在更改arr2。我在chrome控制台中进行了测试。我在JSFIDLE中尝试了这两种方法(mine和Pranav C Balan),这两种方法都能产生预期的输出。