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

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

js兩個嵌套的循環(huán)如何讓數(shù)值正確的刪除

js兩個嵌套的循環(huán)如何讓數(shù)值正確的刪除

慕容3067478 2019-03-15 18:15:59
var patt = new RegExp(11);var data = [    [        {a:1,b:1},        {a:2,b:2},        {a:3,b:3}    ],    [        {a:11,b:11},        {a:22,b:22},        {a:33,b:33}    ]]data.forEach((item,index) => {     item.forEach((item2,index2) => {        if(!patt.test(item2.a)) {            console.log(item2.a); //打印出的結(jié)果是1,2,3,22,33(除了11以外的所有項)            item.splice(index2,1); //問題出在這一句        }    })});console.log(data); //我希望這個data能拿到的是{a:11,b:11}這一條數(shù)據(jù)如上面的代碼所示,我現(xiàn)在希望data打印出的結(jié)果是patt篩選的那個結(jié)果所在的那條數(shù)據(jù){a:11,b:11}該怎么修改這一段代碼,讓它能正確的打印出我想要的結(jié)果?
查看完整描述

3 回答

?
海綿寶寶撒

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

forEach() 方法對數(shù)組的每個元素執(zhí)行一次提供的函數(shù)。

應(yīng)用場景:為一些相同的元素,綁定事件處理器!

那么forEach看上去不那么適合


filter() 方法創(chuàng)建一個新數(shù)組, 其包含通過所提供函數(shù)實現(xiàn)的測試的所有元素。

filter()也不適合,他只有兩個操作,要或者不要,所以最外層的循環(huán)他改變不了


map() 方法創(chuàng)建一個新數(shù)組,其結(jié)果是該數(shù)組中的每個元素都調(diào)用一個提供的函數(shù)后返回的結(jié)果。

這個我覺得就還好了,因為他是一個返回值的合集


var patt = new RegExp(11);

var data = [

    [

        {a:1,b:1},

        {a:2,b:2},

        {a:3,b:3}

    ],

    [

        {a:11,b:11},

        {a:22,b:22},

        {a:33,b:33}

    ]

]

data = data.map((item,index) => { 

    item = item.filter((item2,index2) => {

        console.log(item2)

        return patt.test(item2.a)

    });

    return item

});

console.log(data); //我希望這個data能拿到的是{a:11,b:11}這一條數(shù)據(jù)


查看完整回答
反對 回復(fù) 2019-03-19
?
梵蒂岡之花

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

splice() 方法向/從數(shù)組中添加/刪除項目,然后返回被刪除的項目。


該方法會改變原始數(shù)組。

var patt = new RegExp(11);

var data = [

    [

        {a:1,b:1},

        {a:2,b:2},

        {a:3,b:3}

    ],

    [

        {a:11,b:11},

        {a:22,b:22},

        {a:33,b:33}

    ]

]

data.forEach((item,index) => { 

    item.forEach((item2,index2) => {

        if(!patt.test(item2.a)) {

            console.log(data);

            item.splice(index2,1);

        }

    })

});

看看每次循環(huán)打印的data是什么。

每次在循環(huán)中進(jìn)行splice操作時,都改變了data,也就是去掉一個item2,那么進(jìn)行下一次循環(huán)的時候,由于少了一項,index2可能就取不到了(數(shù)組里只有兩個項,但你想去下表為3的項)。所以造成了這個問題


查看完整回答
反對 回復(fù) 2019-03-19
?
肥皂起泡泡

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

換個思路唄
不改變原數(shù)組

Array.prototype.concat.apply(data).map(item => patt.test(item.a))


查看完整回答
反對 回復(fù) 2019-03-19
  • 3 回答
  • 0 關(guān)注
  • 1512 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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