js獲取兩個數(shù)組對象的差集實現(xiàn)方法
獲取兩個數(shù)組對象中都沒不包含的元素
獲得兩個數(shù)組對象的差集,就是獲取兩個數(shù)組對象中都沒不包含的元素:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>獲得兩個數(shù)組對象的差集</title> <!--引入 element-ui 的樣式,--> <link rel="stylesheet" rel="external nofollow" > <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script> <!-- 引入element 的組件庫--> <script src="https://unpkg.com/element-ui/lib/index.js"></script> <style> * { margin: 0; padding: 0; } #app { margin: 50px; } .item { margin-bottom: 20px; } </style> </head> <body> <div id="app"> <div class="item"> 原數(shù)組: <div v-for="(item, index) in selectedText" :key="index">{{item}}</div> </div> <div class="item"> 和原數(shù)組對比的數(shù)組: <div v-for="(item, index) in brightTextArr" :key="index">{{item}}</div> </div> <div class="item"> 差集: <div v-for="(item, index) in differenceSet" :key="index">{{item}}</div> </div> </div> <script> new Vue({ el: '#app', data() { return { // 原數(shù)組 selectedText: [ { "parentId": "1665538708874002433", "childId": [ "0", "1", "2", "3", "4", "5", "6", "7" ] }, { "parentId": "1665538708861419522", "childId": [ "0", "1", "2", "3", "4", "5" ] } ], // 要對比的數(shù)組 brightTextArr: [ { "parentId": "1665538708861419522", "childId": [ "3", "4", "5", '9' ] }, { "parentId": "1665538708869808130", "childId": [ "0", "1", "2", "3", "4", "5", "6", "7" ] } ], // 差集 differenceSet: [] } }, created() { this.subtractionFun(this.selectedText, this.brightTextArr) }, methods: { subtractionFun(selectedText, brightTextArr) { this.differenceSet = JSON.parse(JSON.stringify(brightTextArr)); // 轉(zhuǎn)換成對象,parentId為屬性名,childId為屬性值, // 格式為 { 1665538708861419522: ['3', '4', '5', '9'] } const brightTextMap = this.differenceSet.reduce((pre, cur) => { return { ...pre, [cur.parentId]: cur.childId, }; }, {}); selectedText.forEach((item, index) => { const childId = item.childId || []; const parentChildId = brightTextMap[item.parentId] || []; // 求兩個數(shù)組的差集 const subtraction = parentChildId.filter((v) => !childId.includes(v)); const parentChildIdIndex = this.differenceSet.findIndex( (v) => v.parentId === item.parentId ); if (parentChildIdIndex >= 0) { // 找到和原數(shù)組有相同有parentId并且有差集的那一項,替換成差集 this.differenceSet[parentChildIdIndex].childId = subtraction; } }); console.log(this.differenceSet, '差集') }, } }) </script> </body> </html>
遇到的問題
1.將要對比的數(shù)組對象轉(zhuǎn)換成以parentId為屬性名,childId為屬性值格式的對象,這樣好對比。
格式為 { 1665538708861419522: ['3', '4', '5', '9'] }
2.需要找到和原數(shù)組有相同有parentId并且有差集的那一項,替換成差集
以上就是js獲取兩個數(shù)組對象的差集實現(xiàn)方法的詳細(xì)內(nèi)容,更多關(guān)于js獲取兩個數(shù)組對象差集的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
javascript獲取wx.config內(nèi)部字段解決微信分享
這篇文章主要介紹了javascript獲取wx.config內(nèi)部字段解決微信分享,需要的朋友可以參考下2016-03-03javascript offsetX與layerX區(qū)別
FF沒有offsetX屬性,有個layerX屬性,只要將事件源的位置設(shè)置成相對定位(position:relative)或絕對定位(position:absolute),兩者結(jié)果就相等,表示事件源相對于父元素的X坐標(biāo)。2010-03-03