JS如何遍歷帶有子集的數(shù)組集合(嵌套數(shù)組)
JS遍歷帶有子集的數(shù)組集合
js中兩種for循環(huán):
for(var i in obj) for(var i=0;i<obj.length;i++)
區(qū)別:
for(var i in obj)
- 是增強(qiáng)for循環(huán),是不使用下標(biāo)的一種遍歷方式,簡(jiǎn)單高效,缺點(diǎn)是不能使用下標(biāo)。
- 如果想要循環(huán)遍歷一個(gè)json對(duì)象就用第一個(gè)
- 如果想循環(huán)遍歷一個(gè)數(shù)組對(duì)象就用第二個(gè)
for(var i in obj)
- 1.遍歷數(shù)組時(shí),i是索引值,arr[i]是索引號(hào)對(duì)應(yīng)的值。
- 2.遍歷字符串時(shí),i是索引值,arr[i]是索引號(hào)對(duì)應(yīng)的字符。
- 3.遍歷json對(duì)象時(shí),i是冒號(hào)前面的值,json[i]是冒號(hào)后面的值。
遍歷嵌套數(shù)組(遞歸)【判斷子集】
traversal(dataInfo)//dataInfo是要循環(huán)遍歷的集合 //遍歷方法 function traverse(data) { for (var i in data) { if (data[i].children) { traverse(data[i].children) } if (!data[i].children.length) { delete data[i].children; } } }
例如我的集合如下
我要獲取其中的Name并輸出
代碼如下:
traversal(dataInfo)//dataInfo是要循環(huán)遍歷的集合 //遍歷方法 function traverse(data) { for (var i in data) { alert(data[i].Name) if (data[i].children) { traverse(data[i].children) } if (!data[i].children.length) { delete data[i].children; } } }
使用JS找出給定數(shù)組的所有子集
題目描述
給定一組不含重復(fù)元素的整數(shù)數(shù)組 nums,返回該數(shù)組所有可能的子集(冪集)。
說(shuō)明:解集不能包含重復(fù)的子集。
解題思路
- 采用二進(jìn)制的思路,全0對(duì)應(yīng)空集,全1對(duì)應(yīng)全集
- 根據(jù)數(shù)組長(zhǎng)度決定二進(jìn)制位數(shù)
- 遍歷二進(jìn)制各值,使用按位與操作符,生成數(shù)組的子集
解題代碼
/** ?* @param {number[]} nums ?* @return {number[][]} ?*/ var subsets = function(nums) { ? ? let res = [], len = nums.length; ? ? for (let i = 0; i < (1 << len); i++) { ?? ??? ?let arr = []; ? ? ? ? for (let j = 0; j < len; j++) { ? ? ? ? ? ? if (i & (1 << j)) arr.push(nums[j]); ? ? ? ? } ? ? ? ? res.push(arr); ? ? } ? ? return res; };
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
由document.body和document.documentElement想到的
不知道大家對(duì)這個(gè)標(biāo)題有沒(méi)有想法,反正此前我一直把他們混為了一談。其實(shí)不然,首先需有個(gè)“標(biāo)準(zhǔn)”的概念。2009-04-04學(xué)前端,css與javascript重難點(diǎn)淺析
JavaScript是一種屬于網(wǎng)絡(luò)的腳本語(yǔ)言,已經(jīng)被廣泛用于Web應(yīng)用開(kāi)發(fā),CSS(Cascading Style Sheet)層疊樣式表單,今天給大家分享css與javascript重難點(diǎn),感興趣的朋友一起看看吧2020-06-06詳解webpack-dev-server使用http-proxy解決跨域問(wèn)題
這篇文章主要介紹了詳解webpack-dev-server使用http-proxy解決跨域問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01淺談js對(duì)象屬性 通過(guò)點(diǎn)(.) 和方括號(hào)([]) 的不同之處
下面小編就為大家?guī)?lái)一篇淺談js對(duì)象屬性 通過(guò)點(diǎn)(.) 和方括號(hào)([]) 的不同之處。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10ionic開(kāi)發(fā)中點(diǎn)擊input時(shí)鍵盤(pán)自動(dòng)彈出
ionic開(kāi)發(fā)移動(dòng)端界面時(shí),在輸入用戶名和密碼的時(shí)候,輸入法不要擋住我的輸入框,并且輸入框往上滾動(dòng)的時(shí)候,頂部標(biāo)題不要上移,下面給大家分享實(shí)現(xiàn)代碼,一起看看吧2016-12-12uni-app實(shí)現(xiàn)獲取驗(yàn)證碼倒計(jì)時(shí)功能
這篇文章主要為大家詳細(xì)介紹了uni-app實(shí)現(xiàn)獲取驗(yàn)證碼倒計(jì)時(shí)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之基本排序算法定義與效率比較【冒泡、選擇、插入排序】
這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之基本排序算法定義與效率比較,結(jié)合實(shí)例形式詳細(xì)總結(jié)分析了javascript排序算法中的冒泡、選擇、插入等排序算法原理與操作技巧,需要的朋友可以參考下2019-02-02微信小程序 wx:for 與 wx:for-items 與 wx:key的正確用法
這篇文章主要介紹了微信小程序 wx:for 與 wx:for-items 與 wx:key的正確用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05