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

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

比較兩個對象以獲取匹配元素

比較兩個對象以獲取匹配元素

Qyouu 2021-11-12 14:23:10
我正在比較具有相同結構的兩個不同對象:對象 1:[{    "date": "2019-10-07",    "price": "1313.01"}, {    "date": "2019-10-08",    "price": "1276.21"}, {    "date": "2019-10-09",    "price": "1257.75"}]對象 2:[{    "date": "2019-10-07",    "price": "2000.10"}, {    "date": "2019-10-09",    "price": "1356.75"}]我正在嘗試根據日期返回一組價格。在我的例子中,我試圖返回["2000.10", "1276.21", "1356.75"]該數組將返回對象 2 的所有價格。但是,您可以看到對象 2 不包含“2019-10-08”的日期,因此我需要從對象 1 返回該日期的價格。這些對象長度是動態的,但對象 1 總是比對象 2 長,因為我從對象 1 中獲取了缺失值。返回的數組將始終是對象 1 的大小。我面臨的問題是循環遍歷并根據索引檢查價格。我的嘗試是遍歷對象 1,然后檢查每個索引的日期是否匹配。但是,當日期不匹配時,我遇到了問題,因此索引不同步。
查看完整描述

3 回答

?
牧羊人nacy

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

你可以使用一個Map和map


Map使用dateas 鍵從第二個數組創建一個

循環遍歷第一個數組,如果日期可用于對應的Mapper使用值,否則使用當前元素的價格Mapperdate

let a = [{"date": "2019-10-07","price": "1313.01"},{"date":"2019-10-08","price": "1276.21"},{"date": "2019-10-09","price": "1257.75"}]

let b = [{ "date": "2019-10-07","price": "2000.10"},{"date": "2019-10-09","price": "1356.75"}]


let mapper = new Map(b.map(({ date, price }) => [date, price]))


let final = a.map(({ date, price }) => {

  return mapper.has(date) ? mapper.get(date) : price

})


console.log(final)


查看完整回答
反對 回復 2021-11-12
?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

您可以將它們轉換為對象,然后合并它們并取值:


const toObject = array => Object.fromEntries(

  array.map(

    ({date,price}) => [date, price]

  )

);


const prices = Object.values(

  Object.assign(

    toObject(array1),

    toObject(array2)

  )

);

您可以使用這種方法組合任意數量的數組:


const prices = Object.values(

  Object.assign(

    ...arrays.map(toObject)

  )

);

它將始終采用具有相同日期的最后一項。


查看完整回答
反對 回復 2021-11-12
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

使用mapand find,如果從arr2is 中找到結果undefined將使用 from 的值arr1。


const arr1 = [{

    "date": "2019-10-07",

    "price": "1313.01"

}, {

    "date": "2019-10-08",

    "price": "1276.21"

}, {

    "date": "2019-10-09",

    "price": "1257.75"

}];


const arr2 = [{

    "date": "2019-10-07",

    "price": "2000.10"

}, {

    "date": "2019-10-09",

    "price": "1356.75"

}];


const result = arr1.map((item) => (arr2.find((item2) => item.date === item2.date) || item).price);



查看完整回答
反對 回復 2021-11-12
  • 3 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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