第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

比較并過(guò)濾對(duì)象中的日期屬性

比較并過(guò)濾對(duì)象中的日期屬性

桃花長(zhǎng)相依 2023-12-14 17:10:26
我有一個(gè)看起來(lái)像這樣的對(duì)象:    myObject = {      publishedDate: string;      Url: string;      Title: string;  }屬性“publishedDate”是格式為“19/01/2021”的字符串。例如,它可以有一個(gè)未來(lái)的日期,即大于今天的值。換句話(huà)說(shuō),我想保留 PublicationDate 等于或小于今天的所有對(duì)象(并刪除所有已結(jié)束的對(duì)象)。對(duì)象保存在我的狀態(tài)(數(shù)組)中:this.state.data我首先為今天的值創(chuàng)建一個(gè)日期變量,以便將其與publishedDate 進(jìn)行比較。我還使用 moment() 將其格式化為與對(duì)象相同的日期格式:let today = moment().format("DD/MM/YYYY");然后我使用過(guò)濾方法來(lái)比較并過(guò)濾掉數(shù)據(jù):  this.state.data.filter(item => new Date(item.publishedDate) >= new Date(today))而且我也嘗試過(guò):  this.state.data.filter(function(item) {          if (new Date(item.publishedDate) >= new Date(today)) {        return false;      }    return true;  });它不僅不起作用,而且我仍然擁有數(shù)組中的所有對(duì)象,并且沒(méi)有任何內(nèi)容被過(guò)濾掉。代碼有什么問(wèn)題嗎?
查看完整描述

6 回答

?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

您可以moment像這樣簡(jiǎn)單地使用 的內(nèi)置比較器

this.state.data.filter(item => moment(item.publishedDate,'DD/MM/YYYY').isSameOrAfter(today))




查看完整回答
反對(duì) 回復(fù) 2023-12-14
?
米脂

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊

構(gòu)造函數(shù)Date不會(huì)接受您當(dāng)前使用的格式,但它會(huì)識(shí)別MM/DD/YYYY格式。此外,filter保留函數(shù)返回 true 的元素,因此您應(yīng)該檢查 是否Date小于或等于當(dāng)前Date。


const today = new Date;

this.state.data = this.state.data.filter(({publishedDate})=>{

    const [d, m, y] = publishedDate.split("/");

    return new Date(m + "/" + d + "/" + y) <= today;

});


查看完整回答
反對(duì) 回復(fù) 2023-12-14
?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊

使用 moment 的String + Format 初始值設(shè)定項(xiàng)和Is Same Or After:

this.state.data.filter(item => moment(item.publishedDate, 'DD/MM/YYYY').isSameOrAfter())


查看完整回答
反對(duì) 回復(fù) 2023-12-14
?
狐的傳說(shuō)

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊

一種可能性是使用輔助函數(shù)notAfterToday,它接受一個(gè)屬性名稱(chēng)(在我們的例子中'publishedDate')并返回一個(gè)函數(shù),該函數(shù)接受具有該屬性名稱(chēng)的對(duì)象并報(bào)告該日期是在當(dāng)前日期之前還是在當(dāng)前日期。

例如,它通過(guò)將 2020 年 12 月 18 日轉(zhuǎn)換為“20201218”,并使用該字符串進(jìn)行比較來(lái)實(shí)現(xiàn)此目的。請(qǐng)注意,這樣做的一個(gè)優(yōu)點(diǎn)是它只調(diào)用一次 Date 構(gòu)造函數(shù),用于初始計(jì)算今天的日期。

const data = [{publishedDate: '18/12/2020', Url: 'http://example.com/1', Title: 'abc'}, {publishedDate: '19/01/2021', Url: 'http://example.com/2', Title: 'def'}, {publishedDate: '07/04/2014', Url: 'http://example.com/3', Title: 'ghi'}, {publishedDate: '19/07/2023', Url: 'http://example.com/4', Title: 'jkl'}, {publishedDate: '05/01/1966', Url: 'http://example.com/5', Title: 'mno'}, {publishedDate: '01/07/2041', Url: 'http://example.com/6', Title: 'pqr'}, {publishedDate: '08/05/2061', Url: 'http://example.com/7', Title: 'stu'}, {publishedDate: '10/08/1999', Url: 'http://example.com/8', Title: 'vwx'}]


const notAfterToday = (prop) => {

  const reorg = (date, [d, m, y] = date.split('/')) => y + m + d 

  const today = new Date()

  const compare = today .getFullYear() + 

                  String ((today .getMonth () + 1)) .padStart (2, '0') +

                  String (today .getDate ()) .padStart (2, '0')

  return (d) => compare >= reorg (d [prop])

}


console .log (data .filter (notAfterToday ('publishedDate')))

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


查看完整回答
反對(duì) 回復(fù) 2023-12-14
?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊

在與今天進(jìn)行比較之前,您必須對(duì)日期字符串進(jìn)行一些微調(diào)。你可以試試這個(gè)——


const data = [

  {

    publishedDate: "19/01/2021",

    url: '',

    title: 'date1'

  },

  {

    publishedDate: "19/05/2021",

    url: '',

    title: 'date2'

  },

  {

    publishedDate: "13/01/2020",

    url: '',

    title: 'date3'

  },

  {

    publishedDate: "16/09/2009",

    url: '',

    title: 'date4'

  },

];


const parseDate = (dateString) => new Date(...dateString.split('/').reverse());



const result = data.filter(item => parseDate(item.publishedDate) <= new Date());


console.log(result);


查看完整回答
反對(duì) 回復(fù) 2023-12-14
?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊

將日期存儲(chǔ)為字符串是一種代碼味道。與將它們存儲(chǔ)為 JS 原生日期格式或 Moment.JS 日期對(duì)象等替代方案相比,比較、存儲(chǔ)和轉(zhuǎn)換它們更加困難。


這是一個(gè)簡(jiǎn)單的示例,說(shuō)明如果您將對(duì)象存儲(chǔ)為日期,您可以如何做到這一點(diǎn)。


請(qǐng)注意,第三個(gè)對(duì)象已被過(guò)濾掉。


const myObject1 = {

  publishedDate: new Date("2019-01-01"), // NEW

  Url: "whatever",

  Title: "sample",

}


const myObject2 = {

  publishedDate: new Date("2020-01-01"), // NEW

  Url: "whatever",

  Title: "sample",

}


const myObject3 = {

  publishedDate: new Date("2099-01-01"), // NEW

  Url: "whatever",

  Title: "sample",

}


const arr = [myObject1, myObject2, myObject3];


const today = new Date();


const filtered = arr.filter((obj) => obj.publishedDate < today);


console.log(filtered);


查看完整回答
反對(duì) 回復(fù) 2023-12-14
  • 6 回答
  • 0 關(guān)注
  • 306 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)