簡體   English   中英

如果數據大於1,如何將數據存儲在數組中?

[英]How do I store data in an array if the data is more than 1?

我有這個腳本:

    let data = [
        {day: 1, time: '08:00', note: 'madrid'},
        {day: 2, time: '08:00', note: 'barcelona'},
        {day: 3, time: '10:00', note: 'juventus'},
    ]
    let days = [7, 1, 2, 3, 4, 5, 6]
    let list = []

    days.forEach(element => {
        let item = data.find(x => x.day === element)

        if (item) {
            list.push(item)
        } else {
            list.push({ day: element, time: undefined })
        }
    });

如果腳本被執行,它就會工作。 它將顯示從第 1 天到第 7 天的時間表。但是,我的問題是數據變量是動態的。 所以一天可能有不止一個時間表,比如這里:

    let data = [
      {day: 1, time: '08:00', note: 'madrid'}, {day: 1, time: '09:00', note: 'chelsea'},
      {day: 2, time: '08:00', note: 'barcelona'}, {day: 2, time: '09:00', note: 'mu'},
      {day: 3, time: '10:00', note: 'juventus'}
    ]

也許我應該每天制作一個內部數組(以天為鍵),這樣我就可以保存具有多個時間表的數據天數。

我怎么做?

你能做這樣的事情嗎?

let data = [
    {day: 1, time: '08:00', note: 'madrid'}, {day: 1, time: '09:00', note: 'chelsea'},
    {day: 2, time: '08:00', note: 'barcelona'}, {day: 2, time: '09:00', note: 'mu'},
    {day: 3, time: '10:00', note: 'juventus'}
]
let days = [7, 1, 2, 3, 4, 5, 6];
let list = [];

days.forEach(day => {
    list.push({day, schedule: [...data.filter(d => d.day === day)]
        .map(d => ({time: d.time, note: d.note}))
    })
});

console.log(list);

好的,假設你有這個:

let days = [7, 1, 2, 3, 4, 5, 6]

let data = [
    {day: 1, time: '08:00', note: 'madrid'},
    {day: 1, time: '09:00', note: 'chelsea'},
    {day: 2, time: '08:00', note: 'barcelona'},
    {day: 2, time: '09:00', note: 'mu'},
    {day: 3, time: '10:00', note: 'juventus'}
]

我首先將過濾data數組以使用您的鍵獲取所有對象,然后將所有這些項目推送到list結果變量。 一種方法可能是:


days.forEach( d => {
    let daySchedule = data.filter(elem => {
        elem.day === d;
    });

    if (daySchedule.length > 0) {
        daySchedule.forEach( elem => list.push(elem) );
    }
    else {
        list.push({ day: d, time: undefined })
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM