さて、オブジェクトのプロパティ値 (値を表示) の 1 つが検索に一致するオブジェクトの検索結果配列があります。この配列の構造は次のとおりで、任意の数の異なるオブジェクトを含めることができます。
results = [
{
day: value,
time: value,
show: value,
sid: value,
network: value,
title: value,
ep: value,
link: value,
}
];
すべての結果を 1 つの大きなオブジェクトに統合し、同じ値を持つ日または時間をマージしようとしています。ただし、各日または時間の値を個別に単純に見ることはできません。たとえば、火曜日にも午後 9 時がある場合、月曜日の午後 9 時を保持する必要があります。
これを行うために、次のような新しいオブジェクト構造を作成しようとしています:
for ( var i=0; i<results.length; i++ ) {
var uniqtime = results[i]["time"];
var uniqshow = results[i].show;
uniqresults[results[i].day] = {
uniqtime: {
uniqshow: {
sid: results[i].sid,
network: results[i].network,
title: results[i]["title"],
ep: results[i].ep,
link: results[i]["link"]
}
}
};
}
しかし、変数サブオブジェクトのキー名は文字列として扱われるため、明らかにこれは機能しません。
代わりに、次のように変数サブオブジェクト/キーを作成しようとすると:
for ( var i=0; i<obj.length; i++ ) {
uniqresults[results[i].day] = {};
uniqresults[results[i].day][results[i]["time"]] = {};
uniqresults[results[i].day][results[i]["time"]][results[i].show] = {
sid: obj[i].sid,
network: results[i].network,
title: results[i]["title"],
ep: results[i].ep,
link: results[i]["link"]
};
}
確かに適切なキー名を作成できますが、各キー ( uniqresults[obj[i].day] = {}
& uniqresults[obj[i].day][obj[i]["time"]] = {}
) を定義するために空のオブジェクトを宣言する必要があります。このように宣言しないと、必要な他のサブキー/値を挿入できません。ただし、このように宣言すると、新しい結果オブジェクトを読み取るたびにサブキー名を本質的に空にしているため、結果配列を正しくマージできません!
多分私はこれを必要以上に複雑にしています。たぶん、より簡単な方法、またはアンダースコアまたはjqueryが手元のタスクを簡素化できる方法があります。とにかく、私は現時点で適切な解決策を切望しています。