一些常用的數(shù)組方法案例(持續(xù)更新)

https://www.wangt.cc/2021/01/%E6%95%B0%E7%BB%84%E5%B9%B6%E9%9B%86-%E4%BA%A4%E9%9B%86-%E5%B7%AE%E9%9B%86/

1.篩選需要的數(shù)組數(shù)據(jù)抒抬;

this.arr.filter(item => item.channel==3 || item.channel==6)

2.根據(jù)某個相同屬性值李丰,組合兩個數(shù)組

const  combinedArray  =  array1.map(item  =>  {
          const  item2  =  array2.find(i  =>  i.noticeId  ===  item.dataId);
          return  {  ...item,  ...item2  };
});

2.根據(jù)某個相同屬性值捺僻,給a數(shù)組賦值b數(shù)組的某一個字段值

a.map(el=>{el.label=b.find(item=>item.channel==el.channel).label})
  1. 根據(jù)A數(shù)組的key篩選出B數(shù)組里對應(yīng)的數(shù)據(jù)
let checkList = ['110101202210242255', '612524196710250612']
this.familyList = [
  { 
    idcard: '110101202210242255',
    name: '張三'
  },
  { 
    idcard: '612524196710250612',
    name: '李四'
  },
  { 
    idcard: '612524196710250699',
    name: '王五'
  }伺帘,
]
// 方法1:
let newList = this.familyList.filter(el => {
    return checkList.some(curVal => curVal === el.idcard)
})
// 方法2:
let newList = this.familyList.filter(el => {
    return checkList.find(item => {
         return el.idcard == item
    })
})
// 篩選非A數(shù)組的key的其它項:
let newList = this.familyList.filter(el => {
    return !checkList.find(item => {
         return el.idcard == item
    })
})

4.將兩個數(shù)組組裝成對象數(shù)組

needArr = joinIds.map((i,index)=>{
          return {
                id: i,
                name: joinNames[index]
              }
            })
  1. every/some校驗數(shù)組值是否符合條件(every-都符合條件,some-其中一個符合條件)
參數(shù)說明:
第一個參數(shù)為一個回調(diào)函數(shù),必傳厉亏,數(shù)組中的每一項都會遍歷執(zhí)行該函數(shù)。
currentValue:必傳烈和,當(dāng)前項的值
index:選傳爱只,當(dāng)前項的索引值
arr:選傳,當(dāng)前項所屬的數(shù)組對象
第二個參數(shù)thisValue為可選參數(shù)斥杜,回調(diào)函數(shù)中的this會指向該參數(shù)對象虱颗。
let flag = array.every(function(currentValue,index,arr), thisValue)
用法舉例:
let flag = resourceList.every((item) => {
    return item.supplier.name && item.resource.name
})

6.精確匹配數(shù)組對象中的多個值

const users = [
  { name: 'Alice', age: 28 },
  { name: 'Bob', age: 30 },
  { name: 'Carol', age: 22 },
  { name: 'David', age: 25 }
];

// 定義要精確匹配的年齡數(shù)組
const ageValues = [25, 28];

// 使用 filter 方法篩選出年齡為指定值的用戶
const filteredUsers = users.filter(user => ageValues.includes(user.age));

console.log(filteredUsers);

//按順序做精確匹配
let arr = [
  { appName: "黨組織", moduleCode: 'dangzuzhi' },
  { appName: "黨委", moduleCode: 'dangwei' },
  { appName: "黨支部總數(shù)", moduleCode: 'dangzhibu' },
  { appName: "黨總支", moduleCode: 'dangzongzhi' },
];
//自定義需要篩選出來的數(shù)據(jù)key和順序
let newOrder = ['dangwei', 'dangzongzhi', 'dangzhibu', 'dangzuzhi'];
let newArr = newOrder.map(code => arr.find(item => item.moduleCode === code));

7.求和

let total = data.reduce((t, v) => {
                return t + v.value
            }, 0)

ES5

var a = [1,2,3];
var b = [1,2,2,4];
//并集(去重)
var union = a.concat(b.filter(function(v) {return a.indexOf(v) === -1 } )); // [1,2,3,4]
//交集
var intersection = a.filter(function(v){ return b.indexOf(v) > -1 }); // [1,2]
//差集
var difference = a.filter(function(v){ return b.indexOf(v) === -1 }); // [3]

ES6

let a = [1,2,3];
let b = [1,2,2,4];
let aSet = new Set(a);
let bSet = new Set(b);
//并集(去重)
let union = Array.from(new Set(a.concat(b))); // [1,2,3,4]
//交集
let intersection = Array.from(new Set(a.filter(v => bSet.has(v)))); // [2]
//差集
let differenceNew = Array.from(new Set(a.concat(b).filter(v => aSet.has(v) && !bSet.has(v))); // [3]

ES7

let a = [1,2,3];
let b = [1,2,2,4];
//并集(去重)
let union = a.concat(b.filter(v => !a.includes(v))); // [1,2,3,4]
//交集
let intersection = a.filter(v => b.includes(v)); // [1,2]
//差集
let difference = a.concat(b).filter(v => a.includes(v) && !b.includes(v)); // [3]

數(shù)組遍歷延遲執(zhí)行

    for (let i = 0; i < fileIds.length; i++) {
      setTimeout(() => {
        let params = {
          fileId: fileIds[i],
          page: { page: 1, pageSize: 999 }
        }
      //每三秒用遍歷的item請求一次接口
        service.queryFileOrNoticeReadInfoList(params).then(res => {
          res.data.map(item=>{
            if (item.memberId == memberId && item.readStatus == true)
            readedFileIds.push(item.fileId)
          })
        }).catch(error => {
          reject(error)
        })
        if (i >= fileIds.length -1) {
          let totalReadIds = [...localReadIds, ...readedFileIds]
          // 緩存已讀ids
          localStorage.setItem('readedFileIds', JSON.stringify(totalReadIds))
          resolve(totalReadIds)
        }
      }, 3000 * i)
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蔗喂,隨后出現(xiàn)的幾起案子忘渔,更是在濱河造成了極大的恐慌,老刑警劉巖缰儿,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件畦粮,死亡現(xiàn)場離奇詭異,居然都是意外死亡乖阵,警方通過查閱死者的電腦和手機宣赔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞪浸,“玉大人儒将,你說我怎么就攤上這事《云眩” “怎么了钩蚊?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蹈矮。 經(jīng)常有香客問我砰逻,道長,這世上最難降的妖魔是什么泛鸟? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任蝠咆,我火速辦了婚禮,結(jié)果婚禮上北滥,老公的妹妹穿的比我還像新娘刚操。我一直安慰自己闸翅,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布赡茸。 她就那樣靜靜地躺著缎脾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪占卧。 梳的紋絲不亂的頭發(fā)上遗菠,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音华蜒,去河邊找鬼辙纬。 笑死,一個胖子當(dāng)著我的面吹牛叭喜,可吹牛的內(nèi)容都是我干的贺拣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼捂蕴,長吁一口氣:“原來是場噩夢啊……” “哼譬涡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起啥辨,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤涡匀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后溉知,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陨瘩,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年级乍,在試婚紗的時候發(fā)現(xiàn)自己被綠了舌劳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡玫荣,死狀恐怖甚淡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情捅厂,我是刑警寧澤材诽,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站恒傻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏建邓。R本人自食惡果不足惜盈厘,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望官边。 院中可真熱鬧沸手,春花似錦外遇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至捐晶,卻和暖如春菲语,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惑灵。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工山上, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人英支。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓佩憾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親干花。 傳聞我的和親對象是個殘疾皇子妄帘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容