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

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

我怎樣才能在javascript中返回兩個對象

我怎樣才能在javascript中返回兩個對象

MYYA 2024-01-18 16:02:55
舉個例子我有兩個數組const tempData = [          { day: "Mon", temp: 33.6 },          { day: "Tue", temp: 34.6 },          { day: "Wed", temp: 33.1 },          { day: "Fri", temp: 35.6 }        ];const coughData = [          { day: "Mon", count: 2 },          { day: "Wed", count: 1 },          { day: "Thur", count: 1 },          { day: "Fri", count: 3 },          { day: "Sat", count: 1 }        ]; 我需要將這些數組合并為一個,以便如果日期匹配,則計數值添加到該對象,如果不匹配,則將兩個對象添加到數組中。不知道解釋是否不太清楚預期結果應該是這樣的:const data = [          { day: "Mon", temp: 33.6, count: 2 },          { day: "Tue", temp: 34.6 },          { day: "Wed", temp: 33.1, count: 1 },          { day: "Thur", count: 1 },          { day: "Fri", temp: 35.6, count: 3 },          { day: "Sat", count: 1 }        ];我正在嘗試像這樣使用映射函數,但無法理解如果兩個對象不匹配,如何返回它們:const data = tempData.map(temp => {          coughData.map(cough => {            if (temp.day === cough.day) {              return (temp.count = cough.count);            } else {              return cough;            }          });          return temp;        });
查看完整描述

5 回答

?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

day您可以收集對象中按分組的所有數據,并獲取值作為結果集。


const

    addToCollection = (collection, key) => o => Object.assign(collection[o[key]] ??= {}, o),

    tempData = [{ day: "Mon", temp: 33.6 }, { day: "Tue", temp: 34.6 }, { day: "Wed", temp: 33.1 }, { day: "Fri", temp: 35.6 }],

    coughData = [{ day: "Mon", count: 2 }, { day: "Wed", count: 1 }, { day: "Thur", count: 1 }, { day: "Fri", count: 3 }, { day: "Sat", count: 1 }],

    collection = {};

    

tempData.forEach(addToCollection(collection, 'day'));

coughData.forEach(addToCollection(collection, 'day'));


console.log(Object.values(collection));

.as-console-wrapper { max-height: 100% !important; top: 0; }


查看完整回答
反對 回復 2024-01-18
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

您可以先合并數組的對象,然后.reduce()與Map一起使用來累積值。地圖可以通過day屬性作為鍵,這將允許您將相關的對象屬性分組在一起。然后,您可以將Array.from()Map 轉換回對象數組,如下所示:


const tempData = [{ day: "Mon", temp: 33.6 }, { day: "Tue", temp: 34.6 }, { day: "Wed", temp: 33.1 }, { day: "Fri", temp: 35.6 }];

const coughData = [{ day: "Mon", count: 2 }, { day: "Wed", count: 1 }, { day: "Thur", count: 1 }, { day: "Fri", count: 3 }, { day: "Sat", count: 1 }];


const arr = [...tempData, ...coughData];


const result = Array.from(arr.reduce((map, {day, ...rest}) => {

? const seen = map.get(day) || {day};

? return map.set(day, {...seen, ...rest});

}, new Map).values());


console.log(result);


查看完整回答
反對 回復 2024-01-18
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

const tempData = [

    { day: "Mon", temp: 33.6 },

    { day: "Tue", temp: 34.6 },

    { day: "Wed", temp: 33.1 },

    { day: "Fri", temp: 35.6 }

];

const coughData = [

    { day: "Mon", count: 2 },

    { day: "Wed", count: 1 },

    { day: "Thur", count: 1 },

    { day: "Fri", count: 3 },

    { day: "Sat", count: 1 }

];


const tempRes = [...tempData, ...coughData];

const result = tempRes.reduce((acc, curr) => {

    const { day, ...rest } = curr;

    acc[day] = acc[day] ? Object.assign({}, acc[day], rest) : curr

    return acc;

}, {})

console.log(Object.values(result))

.as-console-wrapper { max-height: 100% !important; top: 0; }


查看完整回答
反對 回復 2024-01-18
?
慕姐4208626

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

let newArray = Array();

let longer = (tempData.length <= coughData.length) ? coughData.length : 

tempData.length;

for(let i = 0, j = 0; i < longer; ++i, ++j) {

    newArray.push(Object.assign(coughData[i], tempData[j]));

}

打印到控制臺:


[ { day: 'Mon', count: 2, temp: 33.6 },

{ day: 'Tue', count: 1, temp: 34.6 },

{ day: 'Wed', count: 1, temp: 33.1 },

{ day: 'Fri', count: 3, temp: 35.6 },

{ day: 'Sat', count: 1 } ]


查看完整回答
反對 回復 2024-01-18
?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

您可以使用 Object.assign() javascript 函數。Object.assign()方法用于將一個或多個源對象的所有可枚舉屬性的值復制到一個目標對象。該方法將返回目標對象


就像這樣:


const target = { a: 1, b: 2 };

const source = { b: 4, c: 5 };


const returnedTarget = Object.assign(target, source);


console.log(target);

// expected output: Object { a: 1, b: 4, c: 5 }


console.log(returnedTarget);

// expected output: Object { a: 1, b: 4, c: 5 }

https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Object/assign


查看完整回答
反對 回復 2024-01-18
  • 5 回答
  • 0 關注
  • 269 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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