亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 React JS 中組合具有相同日期的數組

如何在 React JS 中組合具有相同日期的數組

當年話下 2022-08-18 16:01:08
我有一個數組:data = [ {date: 4/15/2020, 9:46:07 PM, value: "abc"},         {date: 4/15/2020, 11:19:18 PM, value: "xyz"},         {date: 4/16/2020, 1:25:13 PM, value: "def"},         {date: 4/17/2020, 5:6:17 PM, value: "pqr"}       ];我必須比較日期對象并合并數組。因此,預期的輸出如下所示: data = [ {date: 4/15/2020, value: ["abc", "xyz"]},         {date: 4/16/2020, value: ["def"]},         {date: 4/17/2020, value: ["pqr"]}       ];我怎樣才能做到這一點?提前致謝??!
查看完整描述

3 回答

?
莫回無

TA貢獻1865條經驗 獲得超7個贊

我的方法:


   data = [ {date: 4/15/2020, 9:46:07 PM, value: "abc"},

             {date: 4/15/2020, 11:19:18 PM, value: "xyz"},

             {date: 4/16/2020, 1:25:13 PM, value: "def"},

             {date: 4/17/2020, 5:6:17 PM, value: "pqr"}

           ];


    // Create a map for the dates

    let dataMap = {};

    data.forEach((el) => {

      let tempDate = getDateFormat(el.date);

      if (tempDate in dateMap) {

        dateMap[tempDate].value.push(el.value);

      } else {

        dateMap[tempDate] = {

          date: tempDate,

          value: [el.value],

        };

      }

    });

    data = [];


   // Fill the data

    Object.keys(dataMap).forEach((el) => data.push(dataMap[el]));


   // The format of date

    function getDateFormat(date) {

      return (

        date.getDate() + "/" + (date.getMonth() + 1) + "/" + date.getFullYear()

      );

    }


查看完整回答
反對 回復 2022-08-18
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

使用非常方便reduce


const data = [

  {date: "4/15/2020, 9:46:07 PM", value: "abc"},

  {date: "4/15/2020, 11:19:18 PM", value: "xyz"},

  {date: "4/16/2020, 1:25:13 PM", value: "def"},

  {date: "4/17/2020, 5:6:17 PM", value: "pqr"}

]


const newArray = data.reduce((acc, dt) => {

  const date = new Date(dt.date)

  const y = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(date)

  const m = new Intl.DateTimeFormat('en', { month: 'numeric' }).format(date)

  const d = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(date)

  

  const formatedDate = `${m}/$6xeuf3r/${y}`

 

  const dateAcc = acc[formatedDate]

  if (!dateAcc) {

    acc[formatedDate] = {

      date: formatedDate,

      value: [dt.value]

    }

  } else {

    acc[formatedDate].value.push(dt.value)

  }

  return acc

}, {})


console.log(newArray)


查看完整回答
反對 回復 2022-08-18
?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

const res = []


for (let i = 0; i < data.length; i++) {

  if (res.every(r => r.date !== data[i].date)) {

    res.push(data[i])

  } else {

    const index = res.findIndex(r => r.date == data[i].date)

    res[index] = {...res[index], value: [res[index].value, data[i].value]}

  }

}


console.log(res)

它的工作原理是 id 在 data.value 中有一個值


查看完整回答
反對 回復 2022-08-18
  • 3 回答
  • 0 關注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號