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

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

減少數(shù)組數(shù)組并從 Javascript 數(shù)據(jù)中刪除 null

減少數(shù)組數(shù)組并從 Javascript 數(shù)據(jù)中刪除 null

一只斗牛犬 2023-09-21 18:24:22
我很難通過使用 Javascript 去除空值和嵌入數(shù)組來“壓縮”語法結(jié)果。我正在使用 Nearley 語法檢查器,它可以在句子匹配后運行 JS 函數(shù)。不幸的是,您得到的完整解析結(jié)果是一系列數(shù)組。以下是輸出示例[   [      [         [            [               [                  [ [ 'climb'], [ [ null, 'to' ] ] ],                  [ [ null, [ 'alt' ] ] ],                  [ 332, [ null, [ 'km' ] ] ]               ]            ],            [ null ]         ]      ]   ]]我想刪除所有這些null值,并可能將所有這些數(shù)組“壓縮”為以下形式:[   [ 'climb', 'to' ],   [ 'alt', 332, 'km' ]]或者類似的東西。我嘗試過使用各種filter方法但沒有成功。
查看完整描述

4 回答

?
慕俠2389804

TA貢獻1719條經(jīng)驗 獲得超6個贊

您可以使用相同的方法過濾地圖并平坦所有數(shù)組。


const

    filter = array => array.flatMap(v => Array.isArray(v)

        ? filter(v)

        : v === null

            ? []

            : v

    ),

    array = [[[[[[[['climb'], [[null, 'to']]], [[null, ['alt']]], [332, [null, ['km']]]]], [null]]]]],

    result = filter(array);


console.log(result);

更短的方法


const

    filter = array => array

        .flat(Infinity)

        .filter(v => v !== null),

    array = [[[[[[[['climb'], [[null, 'to']]], [[null, ['alt']]], [332, [null, ['km']]]]], [null]]]]],

    result = filter(array);


console.log(result);


查看完整回答
反對 回復(fù) 2023-09-21
?
慕桂英4014372

TA貢獻1871條經(jīng)驗 獲得超13個贊

真的嗎?...那怎么樣['climb', 'to', 'alt', 332, 'km']?– 彼得·塞利格

那好極了。某種邏輯分組會更好,但嘿,如果沒有的話......

...

const sample = [[[[

  [[

    [ [ 'climb'], [ [ null, 'to' ] ] ],

    [ [ null, [ 'alt' ] ] ],

    [ 332, [ null, [ 'km' ] ] ]

  ]],

  [ null ]

]]]];


function flatOut(list, item) {

  if (Array.isArray(item)) {

    item = item.reduce(flatOut, []);

  }

  return list.concat(item);

}

const result = sample

  .reduce(flatOut, [])

  .filter(elm => (elm != null)); // non strict equality

  //...in order to skip both values, undefined and null.


console.log('result :', result);


查看完整回答
反對 回復(fù) 2023-09-21
?
翻過高山走不出你

TA貢獻1875條經(jīng)驗 獲得超3個贊

一條線解決方案:


1.轉(zhuǎn)換為字符串 2.拆分為平面數(shù)組 3.刪除空值


例子:


var arr = [

    [

        [

            [

                [

                    [

                        [['climb'], [[null, 'to']]],

                        [[null, ['alt']]],

                        [332, [null, ['km']]]

                    ]

                ],

                [null]

            ]

        ]

    ]

];




var res = arr.toString().split(",").filter(item => item);



console.log(res);


查看完整回答
反對 回復(fù) 2023-09-21
?
慕運維8079593

TA貢獻1876條經(jīng)驗 獲得超5個贊

let resArr = [];

  const findLoc = (arr, loc = []) => {

    arr.map((d, i) => {

      if (Array.isArray(d)) {

        findLoc(d, [ ...loc, i ]);

      } else {

        if (d !== null) {

          // console.log(d, loc);

          resArr.push([...loc, d])

        }

      }

    })

}


  const a = [

     [

        [

           [

              [

                 [

                    [ [ 'climb'], [ [ null, 'to' ] ] ],

                    [ [ null, [ 'alt' ] ] ],

                    [ 332, [ null, [ 'km' ] ] ],

                    [ 56, [ null, null, [ [ [8] ] ] ] ]

                 ]

              ],

              [ null ]

           ]

        ]

     ]

  ];

  findLoc(a);

  let finalIndex = [...resArr.reverse()[0]];

  finalIndex.splice(finalIndex.length -1 , 1);

  finalIndex = resArr[0].indexOf(Math.max(...finalIndex));

  const finalObj = {};

  resArr.forEach((d) => {

    finalObj[d[finalIndex]] = finalObj[d[finalIndex]] ? [...finalObj[d[finalIndex]], d[d.length -1]] : [d[d.length -1]]

  });

  console.log(Object.values(finalObj));

  

  // [ [ "to", "climb" ], [ "alt" ], [ "km", 332 ], [ 8, 56 ] ]

改變輸入并測試,

使用矩陣邏輯我們可以激活它


查看完整回答
反對 回復(fù) 2023-09-21
  • 4 回答
  • 0 關(guān)注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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