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)的一種遍歷方式,簡單高效,缺點是不能使用下標(biāo)。
- 如果想要循環(huán)遍歷一個json對象就用第一個
- 如果想循環(huán)遍歷一個數(shù)組對象就用第二個
for(var i in obj)
- 1.遍歷數(shù)組時,i是索引值,arr[i]是索引號對應(yīng)的值。
- 2.遍歷字符串時,i是索引值,arr[i]是索引號對應(yīng)的字符。
- 3.遍歷json對象時,i是冒號前面的值,json[i]是冒號后面的值。
遍歷嵌套數(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ù)組所有可能的子集(冪集)。
說明:解集不能包含重復(fù)的子集。
解題思路
- 采用二進(jìn)制的思路,全0對應(yīng)空集,全1對應(yīng)全集
- 根據(jù)數(shù)組長度決定二進(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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
由document.body和document.documentElement想到的
不知道大家對這個標(biāo)題有沒有想法,反正此前我一直把他們混為了一談。其實不然,首先需有個“標(biāo)準(zhǔn)”的概念。2009-04-04詳解webpack-dev-server使用http-proxy解決跨域問題
這篇文章主要介紹了詳解webpack-dev-server使用http-proxy解決跨域問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01淺談js對象屬性 通過點(.) 和方括號([]) 的不同之處
下面小編就為大家?guī)硪黄獪\談js對象屬性 通過點(.) 和方括號([]) 的不同之處。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之基本排序算法定義與效率比較【冒泡、選擇、插入排序】
這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之基本排序算法定義與效率比較,結(jié)合實例形式詳細(xì)總結(jié)分析了javascript排序算法中的冒泡、選擇、插入等排序算法原理與操作技巧,需要的朋友可以參考下2019-02-02微信小程序 wx:for 與 wx:for-items 與 wx:key的正確用法
這篇文章主要介紹了微信小程序 wx:for 與 wx:for-items 與 wx:key的正確用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05