だから私はこのようなコードを持っています:
this.convertParametersToGroups = function (nodes) {
self.selectedParametersGroup([]);
var emptyParametersList = [];
var pos = 0;
var group;
var tempParametersGroup = [];
// tempParametersGroup: Array[1]
// 0: undefined
$.each(nodes, function (key, val) {
emptyParametersList.push(0);
group = self.convertNodeToParameterGroup(val);
group.position = pos;
tempParametersGroup.push(group);
pos++;
});
self.selectedParametersGroup(tempParametersGroup);
return emptyParametersList;
};
宣言を並べ替えても、コメントされた結果は変わりません。$.each ループに「グループ」があると、コールバックで最初のステートメントを実行する前に、最初の反復で未定義の値が挿入されました。
ただし、次のように名前を変更すると:
this.convertParametersToGroups = function (nodes) {
self.selectedParametersGroup([]);
var emptyParametersList = [];
var pos = 0;
var g;
var tempParametersGr = [];
// tempParametersGr: Array[0]
$.each(nodes, function (key, val) {
emptyParametersList.push(0);
g = self.convertNodeToParameterGroup(val);
g.position = pos;
tempParametersGr.push(g);
pos++;
});
self.selectedParametersGroup(tempParametersGr);
return emptyParametersList;
};
コメントのように機能します。javascript はどうにかして「グループ」名を配列の「グループ」接尾辞にマップし、それを挿入するか、長さの増分を強制するようです。既知の言語機能が不足していますか、それとも...?