Javascript Array.push()和console.log()提供了不同的变量
我想修改这个Javascript Array.push()和console.log()提供了不同的变量,javascript,arrays,Javascript,Arrays,我想修改这个 var array = [{"host": ["example.com", "www.example.com"], "from": "test1", "to": "test2"}, {"host": ["example.net", "www.example.net"], "from": "test3", "to": "test4"}]; 在Chrome 43.0.2357.134 m上插入此 [{"host": "example.com", "from": "test1", "
var array = [{"host": ["example.com", "www.example.com"], "from": "test1", "to": "test2"},
{"host": ["example.net", "www.example.net"], "from": "test3", "to": "test4"}];
在Chrome 43.0.2357.134 m上插入此
[{"host": "example.com", "from": "test1", "to": "test2"},
{"host": "www.example.com", "from": "test1", "to": "test2"},
{"host": "example.net", "from": "test3", "to": "test4"},
{"host": "www.example.net", "from": "test3", "to": "test4"}];
我使用了密码
array.forEach(function(rule){
rule.host.forEach(function(host){
var tmp = rule;
tmp.host = host;
result.push(tmp);
});
});
但它给
[{"host": "www.example.com", "from": "test1", "to": "test2"},
{"host": "www.example.com", "from": "test1", "to": "test2"},
{"host": "www.example.net", "from": "test3", "to": "test4"},
{"host": "www.example.net", "from": "test3", "to": "test4"}];
当我用
console.log()替换array.push
时,它会记录正确的变量。它不能与array.push()
异步,因为我尝试了旧的array.length
方法来添加到数组-没有更改。可能是我使用的foreach
错误-有很多数组。原型方法-我找不到正确的方法。Javascript中的数组和对象是通过引用传递和分配的,而不是通过值var tmp=rule
只是将第二个指针指向原始规则,然后覆盖数据并打印每个条目两次。要达到预期效果,必须将条目中的所有数据克隆到新条目中
array.forEach(function(rule){
rule.host.forEach(function(host){
result.push({
host: host,
from: rule.from,
to: rule.to
});
});
});
Javascript中的数组和对象是通过引用传递和分配的,而不是通过值var tmp=rule
只是将第二个指针指向原始规则,然后覆盖数据并打印每个条目两次。要达到预期效果,必须将条目中的所有数据克隆到新条目中
array.forEach(function(rule){
rule.host.forEach(function(host){
result.push({
host: host,
from: rule.from,
to: rule.to
});
});
});