私は悪いコーディングの日を過ごしています。フィドルのこのコードが期待どおりに機能しない理由がわかりません。
var masterList = new Array();
var templates = new Array();
templates.push({"name":"name 1", "value":"1234"});
templates.push({"name":"name 2", "value":"2345"});
templates.push({"name":"name 3", "value":"3456"});
templates.push({"name":"name 4", "value":"4567"});
templates.push({"name":"name 1", "value":"5678"});
templates.push({"name":"name 2", "value":"6789"});
templates.push({"name":"name 3", "value":"7890"});
templates.push({"name":"name 4", "value":"8901"});
var addUnique = function(thatObj) {
var newList = new Array();
if ( masterList.length == 0 ) {
// add the first element and return
masterList.push(thatObj);
return;
}
for (j=0; j<masterList.length; j++) {
if (masterList[j].name != thatObj.name) {
newList.push(thatObj);
}
}
// store the new master list
masterList = newList.splice(0);
}
for (i=0; i<8; i++) {
addUnique(templates[i]);
}
console.log(masterList);
console.log(masterList.length);
私の(謙虚な)意見では、テンプレート配列を通過し、masterList を templateArray の各要素で埋める必要がありますが、同じ名前の要素は「上書き」する必要があるため、マスター配列には 4 つの要素しかありません。中間配列にコピーされないため、実行されず、新しい配列に置き換えられます。代わりに、masterList に 1 つのエントリを取得します。
古き良き時代、強く型付けされた言語はどこへ行ってしまったのでしょう。ポインター。はぁ。私はJavaScriptがどのような混乱を引き起こしているのかわかりませんが(もちろん、私は混乱を引き起こしています)、JSが私を理解していないことを非難しています...