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)文章
js實(shí)現(xiàn)仿阿里巴巴城市選擇框效果實(shí)例
這篇文章主要介紹了js實(shí)現(xiàn)仿阿里巴巴城市選擇框效果,實(shí)例分析了javascript結(jié)合css與數(shù)組實(shí)現(xiàn)城市選擇框的方法,需要的朋友可以參考下2015-06-06
JS簡(jiǎn)單限制textarea內(nèi)輸入字符數(shù)量的方法
這篇文章主要介紹了JS簡(jiǎn)單限制textarea內(nèi)輸入字符數(shù)量的方法,涉及JavaScript響應(yīng)鼠標(biāo)及鍵盤(pán)事件處理textarea輸入框字符的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
基于 webpack2 實(shí)現(xiàn)的多入口項(xiàng)目腳手架詳解
這篇文章主要給大家介紹了基于 webpack2 實(shí)現(xiàn)的多入口項(xiàng)目腳手架的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-06-06
JS實(shí)現(xiàn)購(gòu)物車(chē)基本功能
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)購(gòu)物車(chē)基本功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
JavaScript選取(picking)和反選(rejecting)對(duì)象的屬性方法
這篇文章主要介紹了JavaScript選取(picking)和反選(rejecting)對(duì)象的屬性方法的相關(guān)資料,需要的朋友可以參考下2017-08-08
腳本之家貼圖轉(zhuǎn)換+轉(zhuǎn)貼工具用到的js代碼超級(jí)推薦
[紅色]腳本之家貼圖轉(zhuǎn)換+轉(zhuǎn)貼工具用到的js代碼超級(jí)推薦...2007-04-04
javascript實(shí)現(xiàn)簡(jiǎn)單的二級(jí)聯(lián)動(dòng)
這篇文章主要介紹了javascript實(shí)現(xiàn)簡(jiǎn)單的二級(jí)聯(lián)動(dòng),非常的實(shí)用,需要的朋友可以參考下2015-03-03
JS中的提升機(jī)制變量提升函數(shù)提升實(shí)例詳解
這篇文章主要為大家介紹了JS中的提升機(jī)制變量提升函數(shù)提升實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09

