JS如何遍歷帶有子集的數(shù)組集合(嵌套數(shù)組)
更新時間:2023年06月29日 14:55:41 作者:薄荷琴糖
這篇文章主要介紹了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)
- 是增強for循環(huán),是不使用下標的一種遍歷方式,簡單高效,缺點是不能使用下標。
- 如果想要循環(huán)遍歷一個json對象就用第一個
- 如果想循環(huán)遍歷一個數(shù)組對象就用第二個
for(var i in obj)
- 1.遍歷數(shù)組時,i是索引值,arr[i]是索引號對應的值。
- 2.遍歷字符串時,i是索引值,arr[i]是索引號對應的字符。
- 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ù)組的所有子集
題目描述
給定一組不含重復元素的整數(shù)數(shù)組 nums,返回該數(shù)組所有可能的子集(冪集)。
說明:解集不能包含重復的子集。
解題思路
- 采用二進制的思路,全0對應空集,全1對應全集
- 根據(jù)數(shù)組長度決定二進制位數(shù)
- 遍歷二進制各值,使用按位與操作符,生成數(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;
};總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
基于 webpack2 實現(xiàn)的多入口項目腳手架詳解
這篇文章主要給大家介紹了基于 webpack2 實現(xiàn)的多入口項目腳手架的相關資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-06-06
JavaScript選取(picking)和反選(rejecting)對象的屬性方法
這篇文章主要介紹了JavaScript選取(picking)和反選(rejecting)對象的屬性方法的相關資料,需要的朋友可以參考下2017-08-08
javascript實現(xiàn)簡單的二級聯(lián)動
這篇文章主要介紹了javascript實現(xiàn)簡單的二級聯(lián)動,非常的實用,需要的朋友可以參考下2015-03-03

