Ini kodenya:

const toDoList = {
    title1 : "Quiet Time",
    title2 : "Study",
    title3 : "Go Jogging",
    title4 : "Eat Breakfast",
    description1 : "",
    description2 : "",
    decription3 : "This is going to help to reach my goals and my life to the fullest",
    decription4 : "",
    date1 : "05/02/2020",
    date2 : "01/02/2020",
    date3 : "tomorrow",
    date4 : "today",
    time1 : "08:12",
    time2 : "13:15",
    time3 : "12:36",
    time4 : "13:25",
    completed1 : false,
    completed2 : true,
    completed3 : false,
    completed4 : true,
    priority1 : "red",
    priority2 : "yellow",
    priority3 : "black",
    priority4 : "white",
    tags1 : ["Personal", "Work", "School"],
    tags2 : ["Personal", "School", "Diary Entry"],
    tags3 : ["Content Creation", "Personal"],
    tags4 : ["Personal"]
  };

Apa yang telah kulakukan: const { title1, description1, date1, time1, completed1, priority1, tags1 } = toDoList;

Saya belum dapat mengetahui cara melewati titik ini dan saya tidak yakin apakah baris di atas bahkan akan digunakan dalam fungsi. Sangat dihargai! EDIT: Tantangan yang saya coba selesaikan yang merupakan alasan untuk posting ini: Ini adalah tantangan Anda untuk merusak data yang dalam bentuk satu objek, kemudian merestrukturisasi data ke beberapa objek individu yang masing-masing mewakili satu tugas datum. Ini semua harus dilakukan secara terprogram. Sebagai tantangan tambahan, pikirkan tentang bagaimana Anda dapat menggunakan argumen untuk mengkonfigurasi perilaku fungsi Anda sehingga Anda dapat mewakili 1 atau 100 (atau jumlah) pengguna tanpa harus menulis ulang salah satu definisi fungsi. Edit2: Saya percaya hasil akhir saya seharusnya 4 objek, masing-masing dengan judul mereka sendiri, deskripsi, tanggal dll. Mirip dengan cara kerjanya: const { title1, description1, date1, time1, completed1, priority1, tags1 } = toDoList; Namun itu tidak akan menjadi pengkodean kering karena saya harus memilikinya sehingga saya dapat menjalankan melalui kode bahkan jika ada seperti 100 judul yang masing-masing membutuhkan objeknya sendiri.

0
TrashPanda 5 April 2021, 15:01

3 jawaban

Jawaban Terbaik

Saya tidak berpikir itu akan melayani Anda untuk menawarkan solusi lengkap, tetapi di sini adalah contoh dari satu cara mengekstraksi tugas dari toDoList}

const task1 = {};
for (const [key, value] of Object.entries(toDoList)) {
  if (key.endsWith('1')) {
    task1[key] = Array.isArray(value) ? [...value] : value;
  }
}

console.dir(task1);

/*
{ 
  completed1: false
  date1: "05/02/2020"
​  description1: ""
​  priority1: "red"
​  tags1: [ "Personal", "Work", "School" ]
​  time1: "08:12"
​  title1: "Quiet Time"
}
*/
0
MikeM 5 April 2021, 12:43

Menggunakan objek.entries kurangi menggunakan array sebagai akumulator

Saya menghancurkan kunci ke keyname dan IDX menggunakan ekspresi reguler

const toDoList = { title1 : "Quiet Time", title2 : "Study", title3 : "Go Jogging", title4 : "Eat Breakfast", description1 : "", description2 : "", description3 : "This is going to help to reach my goals and my life to the fullest", description4 : "", date1 : "05/02/2020", date2 : "01/02/2020", date3 : "tomorrow", date4 : "today", time1 : "08:12", time2 : "13:15", time3 : "12:36", time4 : "13:25", completed1 : false, completed2 : true, completed3 : false, completed4 : true, priority1 : "red", priority2 : "yellow", priority3 : "black", priority4 : "white", tags1 : ["Personal", "Work", "School"], tags2 : ["Personal", "School", "Diary Entry"], tags3 : ["Content Creation", "Personal"], tags4 : ["Personal"] };
  
 const objects = Object.entries(toDoList).reduce((acc,[key,value]) => {
   // match returns match, group1 (key) and group2 (idx)
   const [_,keyName,idx] = key.match(/([^\d]+)(\d)/); // getting the key and idx
   if (acc.length<+idx) {
     acc.push({[keyName]:value})
   }  
   else acc[idx-1][keyName] = value
   return acc
 },[])
 console.log(objects)

Atau ini, menggunakan objek sebagai akumulator.

const toDoList = { title1 : "Quiet Time", title2 : "Study", title3 : "Go Jogging", title4 : "Eat Breakfast", description1 : "", description2 : "", description3 : "This is going to help to reach my goals and my life to the fullest", description4 : "", date1 : "05/02/2020", date2 : "01/02/2020", date3 : "tomorrow", date4 : "today", time1 : "08:12", time2 : "13:15", time3 : "12:36", time4 : "13:25", completed1 : false, completed2 : true, completed3 : false, completed4 : true, priority1 : "red", priority2 : "yellow", priority3 : "black", priority4 : "white", tags1 : ["Personal", "Work", "School"], tags2 : ["Personal", "School", "Diary Entry"], tags3 : ["Content Creation", "Personal"], tags4 : ["Personal"] };
  
 const objects = Object.entries(toDoList).reduce((acc,[key,value]) => {
   const keyName = key.replace(/\d/g,"")
   acc[keyName] = acc[keyName] || []
   acc[keyName].push(value)
   return acc
 },{})
 console.log(objects)
1
mplungjan 5 April 2021, 13:36

Jawaban ini mirip dengan @mplungjan.

const toDoList = { title1 : "Quiet Time", title2 : "Study", title3 : "Go Jogging", title4 : "Eat Breakfast", description1 : "", description2 : "", description3 : "This is going to help to reach my goals and my life to the fullest", description4 : "", date1 : "05/02/2020", date2 : "01/02/2020", date3 : "tomorrow", date4 : "today", time1 : "08:12", time2 : "13:15", time3 : "12:36", time4 : "13:25", completed1 : false, completed2 : true, completed3 : false, completed4 : true, priority1 : "red", priority2 : "yellow", priority3 : "black", priority4 : "white", tags1 : ["Personal", "Work", "School"], tags2 : ["Personal", "School", "Diary Entry"], tags3 : ["Content Creation", "Personal"], tags4 : ["Personal"] };

let deconstructed_objects = Object.entries(toDoList).reduce((a, b) => {
    // Splits the property name and the number index (returns an array)
    const [property, index] = b[0].match(/\D+|\d+/gi);
    
    // Assign values to an object based on the number index - 1
    a[parseInt(index)-1] = {...a[parseInt(index)-1], [property]: b[1]}
    return a 
}, []);

console.log(deconstructed_objects);
1
Techuila 5 April 2021, 13:15