我試圖使用for..in循環遍歷名稱列表,將它們添加到模板對象('組'),然後將每個完整的對象添加到一個數組('queryList')。這不起作用,因爲每次迭代都會覆蓋數組中的所有值。任何建議爲什麼會發生這種情況For..In循環覆蓋所有數組值
// BATTERY OBJECT
var groupList = [ "LOGIN", "BROWSE", "SEARCH"];
// GROUP OBJECT
var group = {dbName: 'CARS', name: '', collectionName: 'group'};
// INIT VARS
var groupName = '',
queryList = [];
// COMPILATION FUNCTION
var buildGroupQueries = function(group){
// BUILD BATCH OF QUERIES
for (var i in groupList){
groupName = groupList[i];
group.name = groupName;
queryList[i] = group;
}
console.log(queryList);
}
buildGroupQueries(group);
它應該看起來像:
[
{"dbName":"CARS","name":"LOGIN","collectionName":"group"},
{"dbName":"CARS","name":"BROWSE","collectionName":"group"},
{"dbName":"CARS","name":"SEARCH","collectionName":"group"}
]
相反,我得到:
[
{"dbName":"CARS","name":"SEARCH","collectionName":"group"},
{"dbName":"CARS","name":"SEARCH","collectionName":"group"},
{"dbName":"CARS","name":"SEARCH","collectionName":"group"}
]
問題是與'queryList [I] =基團;'。看看那個'我'。你可以設置queryQuery [「LOGIN」]爲一個值嗎?或者,也許queryList需要被初始化爲一個字典?我可能會避免使用'in',直到我更好地理解我對這些變量所做的事情。 – Bobort 2014-09-30 23:12:22
問題根本不在於'in'語句中,問題在於'group'是一個引用並且不會被複制。 – 2014-09-30 23:13:38