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

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

請(qǐng)問(wèn)按帶有日期值的單鍵對(duì)象數(shù)組進(jìn)行排序

請(qǐng)問(wèn)按帶有日期值的單鍵對(duì)象數(shù)組進(jìn)行排序

紅糖糍粑 2019-08-02 14:02:24
按帶有日期值的單鍵對(duì)象數(shù)組進(jìn)行排序我有一個(gè)帶有幾個(gè)鍵值對(duì)的對(duì)象數(shù)組,我需要根據(jù)‘update_at’對(duì)它們進(jìn)行排序:[     {         "updated_at" : "2012-01-01T06:25:24Z",         "foo" : "bar"     },     {         "updated_at" : "2012-01-09T11:25:13Z",         "foo" : "bar"     },     {         "updated_at" : "2012-01-05T04:13:24Z",         "foo" : "bar"     }]最有效的方法是什么?
查看完整描述

4 回答

?
蕭十郎

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

你可以用Array.sort.

下面是一個(gè)(未經(jīng)測(cè)試的)示例:

arr.sort(function(a, b){
    var keyA = new Date(a.updated_at),
        keyB = new Date(b.updated_at);
    // Compare the 2 dates
    if(keyA < keyB) return -1;
    if(keyA > keyB) return 1;
    return 0;});




查看完整回答
反對(duì) 回復(fù) 2019-08-03
?
Helenr

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

我在這里已經(jīng)回答了一個(gè)類(lèi)似的問(wèn)題:對(duì)對(duì)象數(shù)組進(jìn)行排序的簡(jiǎn)單函數(shù)

對(duì)于這個(gè)問(wèn)題,我創(chuàng)建了一個(gè)小函數(shù),它可以做您想做的事情:

function sortByKey(array, key) {
    return array.sort(function(a, b) {
        var x = a[key]; var y = b[key];
        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
    });}




查看完整回答
反對(duì) 回復(fù) 2019-08-03
?
牧羊人nacy

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

這個(gè)Array.Sort()方法對(duì)數(shù)組的元素進(jìn)行排序,并返回該數(shù)組。小心Array.Sort()因?yàn)樗皇?/trans>不變..對(duì)于不可變的排序使用不可變排序.

此方法是使用當(dāng)前的updated_atISO格式。我們用new Data(iso_string).getTime()若要將ISO時(shí)間轉(zhuǎn)換為Unix時(shí)間戳,請(qǐng)執(zhí)行以下操作。Unix時(shí)間戳是一個(gè)我們可以對(duì)其進(jìn)行簡(jiǎn)單計(jì)算的數(shù)字。我們減去第一個(gè)和第二個(gè)時(shí)間戳,結(jié)果是;如果第一個(gè)時(shí)間戳大于第二個(gè)時(shí)間戳,返回?cái)?shù)將是正數(shù)。如果第二個(gè)數(shù)字大于第一個(gè),則返回值為負(fù)數(shù)。如果兩者相同,則返回為零。這完全符合內(nèi)聯(lián)函數(shù)所需的返回值。

ES6:

arr.sort((a,b) => new Date(a.updated_at).getTime() - new Date(b.updated_at).getTime());

ES5:

arr.sort(function(a,b){ 
 return new Date(a.updated_at).getTime() - new Date(b.updated_at).getTime();});

如果你改變了updated_at要成為Unix時(shí)間戳,您可以這樣做:

ES6:

arr.sort((a,b) => a.updated_at - b.updated_at);

ES5:

arr.sort(function(a,b){ 
 return a.updated_at - b.updated_at;});

在這篇文章發(fā)表時(shí),現(xiàn)代瀏覽器不支持ES6。要在現(xiàn)代瀏覽器中使用ES6,請(qǐng)使用巴貝爾將代碼轉(zhuǎn)換到ES5。預(yù)期瀏覽器支持ES6在不久的將來(lái)。

Array.Sort()是否應(yīng)將三種可能的結(jié)果之一的返回值重新計(jì)算在內(nèi):

  • 正數(shù)(第一項(xiàng)>第二項(xiàng))
  • 負(fù)數(shù)(第一項(xiàng)<第二項(xiàng))
  • 如果兩項(xiàng)相等,則為0。

注意,內(nèi)聯(lián)函數(shù)的返回值可以是任何正數(shù)或負(fù)數(shù)。Sort()不關(guān)心返回號(hào)是什么。它只關(guān)心返回值是正、負(fù)還是零。

對(duì)于不可變的排序:(例如在ES6中)

const sort = require('immutable-sort');const array = [1, 5, 2, 4, 3];const sortedArray = sort(array);

你也可以這樣寫(xiě):

import sort from 'immutable-sort';const array = [1, 5, 2, 4, 3];const sortedArray = sort(array);

從您看到的導(dǎo)入是一種在ES6中包含javascript的新方法,并使您的代碼看起來(lái)非常干凈。我個(gè)人的最?lèi)?ài)。

不可變排序不會(huì)改變?cè)磾?shù)組,而是返回一個(gè)新數(shù)組。使用const推薦用于不可變數(shù)據(jù)。




查看完整回答
反對(duì) 回復(fù) 2019-08-03
  • 4 回答
  • 0 關(guān)注
  • 421 瀏覽
慕課專(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)