Я хочу изменить этотArray.push() и console.log() дает различные переменные
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 м
[{"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"}];
Когда я заменяю array.push
на console.log()
, он записывает правые переменные. Это не может быть проблемой async с array.push()
, потому что я попробовал старый array.length
способ добавить в массив - никаких изменений. Может быть, я использую foreach
неправильно - есть много методов Array.prototype
- я не могу получить правильный.