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

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

在沒有條件的情況下處理可能是數(shù)組或單個值的數(shù)據(jù)

在沒有條件的情況下處理可能是數(shù)組或單個值的數(shù)據(jù)

慕碼人8056858 2021-04-19 16:41:10
我有一個變量data,它可以是單個值(假設(shè)它可以是對象,字符串或數(shù)字)或數(shù)組。我想在數(shù)組的每個元素或單個值上執(zhí)行一個函數(shù)。目前,我有:let result;if (Array.isArray(data)) {   result = data.map(d => f(d))} else {   result = f(data);}我可以使用三元函數(shù)來達(dá)到相同的效果,但是我想刪除條件函數(shù)。是否有慣用的方法?
查看完整描述

2 回答

?
慕容708150

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

您可以在此示例中使用“看起來function很神秘” fmap(盡管名稱并不正確):


function fmap (f, x) {

  return (function (g) {

    return g(f);

  })((x && x.map && x.map.bind(x)) || function (h) { return h(x); });

}


const upper = x => x.toUpperCase();


console.log('fmap over array:', fmap(upper, ['a', 'b', 'c']));

console.log('fmap over string:', fmap(upper, 'a'));

WTF ??

fmap接受一個函數(shù)和一個值(fx)。它調(diào)用IIFE來確定該值是否x已實現(xiàn)map方法。如果是這樣,它將把該map方法綁定到該值。如果該值未實現(xiàn)map方法,則它將創(chuàng)建一個匿名函數(shù),該函數(shù)將接受另一個函數(shù),并使用value調(diào)用該另一個函數(shù)x。

最后,它返回計算結(jié)果。

進一步的想法

老實說,我個人的看法是使用條件!這更容易理解和推理。無論如何,它可以在沒有條件語句或三元運算符的情況下執(zhí)行。


查看完整回答
反對 回復(fù) 2021-04-29
?
慕田峪4524236

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

您可以添加其他尺寸并使用.flat()它來擺脫它

[5].flat() // [5]
[[5]].flat() // [5]

這樣,您可以編寫:

[data].flat().map(f);

但這是沒有意義的,只是浪費了計算時間。有條件的應(yīng)該在這里更快。

嘗試使輸入保持一致,并始終將數(shù)組傳遞到該位置(即使使用單個元素也是如此)。



查看完整回答
反對 回復(fù) 2021-04-29
  • 2 回答
  • 0 關(guān)注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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