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

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

如何使用 lodash .map() 在結(jié)果中保留鍵名?

如何使用 lodash .map() 在結(jié)果中保留鍵名?

哈士奇WWW 2023-04-27 17:12:23
log(_.map(businessOpenSlots, weekday => {        return _.spread(_.union)(_.map(weekday, slot => {           return this.getTimeStops(slot.open, slot.close);        }))    } ))這是上面的代碼正在下面打印。但是,我想將鍵設(shè)為工作日,而不是 0..4。不確定如何最好地實(shí)現(xiàn)這一點(diǎn)。數(shù)據(jù)businessOpenSlots如下{   "friday":[      {         "open":"0900",         "close":"1700"      }   ]"monday":[      {         "open":"0800",         "close":"1530"      },      {         "open":"1730",         "close":"1930"      }   ]"thursday":[      {         "open":"0900",         "close":"1700"      }   ]"tuesday":[      {         "open":"24hrs",         "close":"24hrs"      }   ]"wednesday":[      {         "open":"0900",         "close":"1700"      }   ]}
查看完整描述

2 回答

?
慕少森

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

您也可以使用 vanilla JS 相對(duì)簡(jiǎn)單地完成此操作。這是一個(gè)版本:


const hoursToTimeStops = businessOpenSlots =>

? Object .fromEntries (

? ? Object .entries (businessOpenSlots) .map (([d, h]) => [d, h .flatMap (vm .getTimeStops)])

? )


const businessOpenSlots = {monday: [{open: "0800", close: "1530"}, {open: "1730", close: "1930"}], tuesday: [{open: "24hrs", close: "24hrs"}], wednesday: [{open: "0900", close: "1700"}], thursday: [{open: "0900", close: "1700"}], friday: [{open: "0900", close: "1700"}]}


console .log (hoursToTimeStops (businessOpenSlots))

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

<script> // Dummy implementation for `vm`.

const every15mins = (sh, sm, eh, em) => sh * 60 + sm > eh * 60 + em ? [] : [`${String(sh).padStart(2, '0')}:${String(sm).padStart(2, '0')}`, ...every15mins(sh + (sm >= 45 ? 1 : 0), (sm + 15) % 60, eh, em)]

const vm = {getTimeStops:? ({open, close}) => open === '24hrs' ? ["00:00"] : every15mins(Number(open.slice(0, 2)), Number(open.slice(2, 4)), Number(close.slice(0, 2)), Number(close.slice(2, 4)))}

</script>

lodash?(或 Ramda 的)很好地封裝了調(diào)用entriesmapping 結(jié)果、然后調(diào)用的過(guò)程,但其余部分似乎比您的 lodash 版本更簡(jiǎn)單。fromEntriesmapValuesmap

但是,我相信您應(yīng)該能夠大大簡(jiǎn)化該版本。我對(duì) Ramda 更熟悉(免責(zé)聲明:我是它的作者之一),而且我知道在 Ramda 中,我們可以簡(jiǎn)單地寫(xiě):

const?hoursToTimeStops?=?map?(chain?(vm.getTimeStops))

我猜你可以用 lodash 代替mapValuesmapitsflatMap代替chain.?(除非你使用 Lodash FP,否則它可能不會(huì)那么優(yōu)雅,但也不會(huì)差那么遠(yuǎn)。)


查看完整回答
反對(duì) 回復(fù) 2023-04-27
?
aluckdog

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

自己找到解決方案并在此處發(fā)布以供社區(qū)使用。


我只需要使用_.mapValues()Lodash。


let availableSlots = _.mapValues(businessOpenSlots, function(slots, weekday) {

       return _.spread(_.union)(_.map(slots, slot => {

          return vm.getTimeStops(slot.open, slot.close);

       }))

    });

log(availableSlots)

它返回以下內(nèi)容,正如我想要的那樣。

查看完整回答
反對(duì) 回復(fù) 2023-04-27
  • 2 回答
  • 0 關(guān)注
  • 145 瀏覽
慕課專(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)