国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JavaScript:交集和差集的應用場景

這篇具有很好參考價值的文章主要介紹了JavaScript:交集和差集的應用場景。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在集合A和集合B中,屬于集合A,同時也屬于集合B的元素組成的集合,就是交集

在A中所有不屬于集合B元素,組合成集合,就是差集。

那么在平時的開發(fā)中,如何使用差集和交集來解決問題呢?

現(xiàn)在有這樣的場景,在一個表格編輯數(shù)據(jù)后,要把編輯前的數(shù)據(jù)和修改后的數(shù)據(jù),匯總。

源數(shù)據(jù)為:

const arr1 = [{ name: 11, id: 1 }, { name: 21, id: 2 }, { name: 31, id: 3 }, { name: 41, id: 4 }, { name: 51, id: 5 }, { name: 61, id: 6 }];

在頁面中表現(xiàn)為:

JavaScript:交集和差集的應用場景,JavaScript進階知識,javascript,java,開發(fā)語言

現(xiàn)在刪除第一行數(shù)據(jù),第二行的名字改為2109,第三行的名字改為3321;然后新增兩行,分別為:71、81。

數(shù)據(jù)如下:

const arr2 = [{ name: 2109, id: 2 }, { name: 3321, id: 3 }, { name: 41, id: 4 }, { name: 51, id: 5 }, { name: 61, id: 6 }, { name: 71, id: null }, { name: 81, id: null }];

頁面為:

JavaScript:交集和差集的應用場景,JavaScript進階知識,javascript,java,開發(fā)語言
由于是新增數(shù)據(jù)還沒有提交保存,所以對應的序號,也就是ID為空。

最終想要的效果圖下圖所示:

JavaScript:交集和差集的應用場景,JavaScript進階知識,javascript,java,開發(fā)語言
需要在表格中體現(xiàn)那些數(shù)據(jù)是修改、刪除、新增,哪些數(shù)據(jù)沒有改變。

思路:

  1. 源數(shù)據(jù)是一個數(shù)組arr1;
  2. 修改后的數(shù)據(jù)也是一個數(shù)組arr2;
  3. 刪除的數(shù)據(jù),在數(shù)組arr1中有,數(shù)組arr2中沒有;
  4. 修改的數(shù)據(jù),在數(shù)組arr1和arr2中,都找對應的ID;
  5. 新增的數(shù)據(jù),只出現(xiàn)在數(shù)組arr2中。

那么數(shù)組arr2與數(shù)組arr1的差集,就是新增的數(shù)據(jù):

let add = arr2.filter(x => arr1.every(y => y.id != x.id))

數(shù)組arr1與數(shù)組arr2的差集,就是刪除的數(shù)據(jù):

let del = arr1.filter(x => arr2.every(y => y.id != x.id))

修改或者沒有修改數(shù)據(jù),就是數(shù)組arr1和數(shù)組arr2的交集:

// arr1、arr2的交集
let arr12Inter = arr1.filter(x => arr2.some(y => x.id === y.id))
let arr21Inter = arr2.filter(x => arr1.some(y => x.id === y.id))

最后一步,就是組合所有的差集、交集,匯總成新的數(shù)組:

for (let index = 0; index < arr12Inter.length; index++) {
    newArr.push({ oldData: arr21Inter[index], newData: arr12Inter[index] })
}

del.forEach(item => newArr.push({ oldData: item, newData: null }))
add.forEach(item => newArr.push({ oldData: null, newData: item }))

完整代碼:

const arr1 = [{ name: 11, id: 1 }, { name: 21, id: 2 }, { name: 31, id: 3 }, { name: 41, id: 4 }, { name: 51, id: 5 }, { name: 61, id: 6 }];

const arr2 = [{ name: 2109, id: 2 }, { name: 3321, id: 3 }, { name: 41, id: 4 }, { name: 51, id: 5 }, { name: 61, id: 6 }, { name: 71, id: null }, { name: 81, id: null }];
let newArr = [];
// arr1——>arr2的差集:刪除
let del = arr1.filter(x => arr2.every(y => y.id != x.id))

// arr2——>arr1的差集:新增
let add = arr2.filter(x => arr1.every(y => y.id != x.id))

// arr1、arr2的交集:修改
let arr12Inter = arr1.filter(x => arr2.some(y => x.id === y.id))
let arr21Inter = arr2.filter(x => arr1.some(y => x.id === y.id))

console.log("arr1與arr2的差集:", del)
console.log("arr2與arr1的差集:", add)
console.log("交集", arr12Inter, arr21Inter)

for (let index = 0; index < arr12Inter.length; index++) {
    newArr.push({ oldData: arr21Inter[index], newData: arr12Inter[index] })
}

del.forEach(item => newArr.push({ oldData: item, newData: null }))
add.forEach(item => newArr.push({ oldData: null, newData: item }))

console.log("匯總:", newArr)

JavaScript:交集和差集的應用場景,JavaScript進階知識,javascript,java,開發(fā)語言

使用交集、差集,僅僅是一種方式!文章來源地址http://www.zghlxwxcb.cn/news/detail-657817.html

到了這里,關(guān)于JavaScript:交集和差集的應用場景的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • JavaScript場景應用:Canvas實戰(zhàn)開發(fā)一個二維折線圖插件

    JavaScript場景應用:Canvas實戰(zhàn)開發(fā)一個二維折線圖插件

    ??作者簡介,黑夜開發(fā)者,全棧領域新星創(chuàng)作者?,阿里云社區(qū)專家博主,2023年6月csdn上海賽道top4。 ??數(shù)年電商行業(yè)從業(yè)經(jīng)驗,歷任核心研發(fā)工程師,項目技術(shù)負責人。 ??本文已收錄于專欄:100個JavaScript的小應用。 ??歡迎 ??點贊?評論?收藏 折線圖是一種常見的數(shù)據(jù)

    2024年02月14日
    瀏覽(16)
  • sql求交集與差集

    日常工作中,針對兩個表A,B,求A與B表中同一個字段的交集與差集是常見需求,下面我們來總結(jié)一下求交集與差集的方法。 假設現(xiàn)在有兩張表A,B,A,B表中均有一個字段為id,現(xiàn)在我們想求 A與B中都存在的id有多少個(去重),在A中但不在B中的id有多少個。 1.1 通過join求交集 要求

    2023年04月17日
    瀏覽(15)
  • python 計算列表的交集,并集,差集

    如果是列表的話,先將列表轉(zhuǎn)為集合,使用集合去操作,返回的結(jié)果也為集合 比如兩個列表: 1. 并集,就是a和b的所有元素 2. 差集,b有,a沒有的元素 3. 交集,ab共有的元素 4. 對稱差集,a和b所有不屬于set(b) set(a)的集合

    2024年02月15日
    瀏覽(29)
  • laravel 兩個集合取交集、并集、差集

    交集: 使用intersect()函數(shù),用于獲取兩個集合的交集: 并集:使用union()函數(shù),用于獲取兩個集合的并集: 差集:使用diff()函數(shù),用于獲取兩個集合的差集:

    2024年02月12日
    瀏覽(45)
  • go 計算map 差集、并集、交集

    原文鏈接: https://www.zhoubotong.site/post/95.html 某些業(yè)務場景可能需要實現(xiàn)兩個或者多個map 的交差并集,一下舉個簡單的demo, 思路其實并不復雜: 輸出: 代碼中有簡單說明,不難看出實現(xiàn)過程其實比較簡單。

    2023年04月23日
    瀏覽(35)
  • php 兩個數(shù)組取交集、并集、差集

    php 兩個數(shù)組取交集、并集、差集 交集:array_intersect() 并集:array_merge() 差集:array_diff() laravel 兩個集合取交集、并集、差集 交集: 使用intersect()函數(shù),用于獲取兩個集合的交集: 并集:使用union()函數(shù),用于獲取兩個集合的并集: 差集:使用diff()函數(shù),用于獲取兩個集合的

    2024年02月12日
    瀏覽(21)
  • 【Java】求兩集合的交集、并集、差集

    1、removeAll方法:從list中刪除指定集合中包含的所有元素。 2、retainAll方法:從list中刪除指定集合中不包含的所有元素。 3、addAll方法:用來向Set集合添加另一個集合對象所包含的所有內(nèi)容。 參考鏈接:https://www.cnblogs.com/hxf-zb/p/16102135.html 利用集合的contains方法,來對比第二個

    2024年02月16日
    瀏覽(21)
  • Java 集合操作之交集、并集和差集

    在 Java 編程中,經(jīng)常需要對集合進行一些操作,比如取兩個集合的交集、并集和差集。本文將介紹如何使用 Java 集合框架中的方法來實現(xiàn)這些集合操作,并通過源碼解析來深入了解其實現(xiàn)原理。 先上代碼 執(zhí)行結(jié)果 此處各操作會改動原始集合,所以此處的操作都是創(chuàng)建了一個

    2024年02月09日
    瀏覽(18)
  • HuTool工具類 CollUtil 實現(xiàn)多個集合的交集、差集

    驗證用數(shù)據(jù)集準備: 一、交集 1、不去重交集 輸出: 交集結(jié)果:[4, 5, 5] 2、去重交集

    2024年02月05日
    瀏覽(162)
  • jdk8兩個List取交集、差集、并集(不去重)、并集(去重)

    jdk8兩個List取交集、差集、并集(不去重)、并集(去重) demo代碼: 輸出結(jié)果:

    2024年02月15日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包