日名JavaScriptによるオブジェクトの並べ替え
たとえば、週の7日間の湿度に関するデータを含むオブジェクトの配列があるとします。ただし、現在、データは配列内にランダムに配置されています。月曜日、火曜日、水曜日、最後に日曜日のデータが最初に来るように、オブジェクトの配列を日に従ってソートすることになっています。
以下は私たちの配列です-
const weather = [{
day: 'Wednesday',
humidity: 60
}, {
day: 'Saturday',
humidity: 50
}, {
day: 'Thursday',
humidity: 65
}, {
day: 'Monday',
humidity: 40
}, {
day: 'Sunday',
humidity: 35
}, {
day: 'Friday',
humidity: 80
}, {
day: 'Tuesday',
humidity: 45
}]; この問題の鍵は、特定の曜日を正しいインデックスにマップするマップオブジェクトを作成することです。このようになります-
const map = {
'Monday': 1,
'Tuesday': 2,
'Wednesday': 3,
'Thursday': 4,
'Friday': 5,
'Saturday': 6,
'Sunday': 7
}; これで、Array.prototype.sort()メソッドを適用して、マップ内のインデックスに従ってオブジェクトをランク付けするカスタムコールバックを渡すことができます。
このための完全なコードは-
になります例
const weather = [{
day: 'Wednesday',
humidity: 60
}, {
day: 'Saturday',
humidity: 50
}, {
day: 'Thursday',
humidity: 65
}, {
day: 'Monday',
humidity: 40
}, {
day: 'Sunday',
humidity: 35
}, {
day: 'Friday',
humidity: 80
}, {
day: 'Tuesday',
humidity: 45
}];
const map = {
'Monday': 1,'Tuesday': 2,'Wednesday': 3,'Thursday': 4,'Friday': 5,'Saturday': 6,
'Sunday': 7
};
weather.sort((a, b) => {
return map[a.day] - map[b.day];
});
console.log(weather); 出力
このコードの出力は-
になります[
{ day: 'Monday', humidity: 40 },
{ day: 'Tuesday', humidity: 45 },
{ day: 'Wednesday', humidity: 60 },
{ day: 'Thursday', humidity: 65 },
{ day: 'Friday', humidity: 80 },
{ day: 'Saturday', humidity: 50 },
{ day: 'Sunday', humidity: 35 }
] -
JavaScriptのオブジェクトの同等性を説明します。
JavaScriptでは、文字列、数値、ブール値などのプリミティブはそれらの値によって比較され、オブジェクト(ネイティブまたはカスタム)はそれらの参照によって比較されます。参照による比較とは、2つ以上のオブジェクトがメモリ内の同じ場所を指しているかどうかを意味します。 以下は、JavaScriptのオブジェクトの同等性を説明するコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name=&q
-
JavaScriptでツリー化するオブジェクトのフラット配列
このようなオブジェクトの配列があるとします- const arr = [ { id: '1', name: 'name 1', parentId: null }, { id: '2', name: 'name 2', parentId: null }, { id: '2_1', name: 'name 2_1', parentId: '2' }, { id: '2_2