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

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

為什么數組在reduce中不可迭代

為什么數組在reduce中不可迭代

慕慕森 2021-04-26 13:14:35
我想按偶數和奇數元素拆分數組,這是我的代碼A.reduce((a,v,i)=> v % 2 == 0 ? [...a[0],v] : [...a[1],v],[[],[]])A是數字數組。我不明白為什么會出現錯誤a [1]是不可迭代的嗎?考慮到此代碼可以正常工作:let arr = [[],[]];  console.log([...arr[1], 4]);
查看完整描述

3 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

您只在中返回一個數組reduce()。您還需要返回第二個。在第一次迭代中,ais [[],[]]。但是在第一個之后,它將僅成為單個陣列。


let A = [1,2,3,4]

const res= A.reduce((a,v,i)=> v % 2 == 0 ? [a[0],[...a[1],v]] : [[...a[0],v],a[1]],[[],[]])

console.log(res)

您可以在此處使用技巧。由于v % 2將返回1或者0所以你可以push()到和使用,返回原來的a不擴散運營商。


let A = [1,2,3,4]

const res= A.reduce((a,v,i)=> (a[v % 2].push(v),a),[[],[]])

console.log(res)


查看完整回答
反對 回復 2021-05-13
?
慕田峪7331174

TA貢獻1828條經驗 獲得超13個贊

您可以使用解構分配來簡化此操作-


const data =

  [ 1, 2, 3, 4 ]


const result =

  data.reduce

    ( ([ odd, even ], v) =>

        Boolean (v & 1)

          ? [ [...odd, v], even ]

          : [ odd, [...even, v] ]

    , [ [], [] ]

    )

    

console.log(result)

// [ [ 1, 3 ], [ 2, 4 ] ]

您可以創(chuàng)建一個通用函數,partition-


const partition = (p, a = []) =>

  a.reduce

    ( ([ t, f ], v) =>

        p (v)

          ? [ [...t, v], f ]

          : [ t, [...f, v] ]

    , [ [], [] ]

    )



const evenOdds =

  partition (v => Boolean (v & 1), [ 1, 2, 3, 4 ])


const lessThan2 =

  partition (v => v < 2, [ 1, 2, 3, 4 ])

    

console.log(evenOdds)

// [ [ 1, 3 ], [ 2, 4 ] ]


console.log(lessThan2)

// [ [ 1 ], [ 2, 3, 4 ] ]


查看完整回答
反對 回復 2021-05-13
?
人到中年有點甜

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

您也可以過濾兩次:

  const res = [A.filter(it => it % 2), A.filter(it => !(it % 2))];


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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