js之遍歷嵌套數(shù)組對(duì)象方式
js遍歷嵌套數(shù)組對(duì)象
chuli(arr) {
let kongarr = []
for (let i = 0; i < arr.length; i++) {
console.log("arr[i]", arr[i])
let children1=[]
let children2=[]
let children3=[]
let obj={}
obj.id=arr[i].id
obj.name=arr[i].name
obj.children=children2
let two=arr[i].children
for (let j=0;j<two.length;j++){
console.log("two",two[j])
let san=two[j].children
console.log("san",san)
children2.push({
id:two[j].id,
name:two[j].name,
children:children3
})
if (two[j].name=='市公司'&&two[j].children.length>=2){
let sum=0
for (let k=0;k<san.length;k++){
}
children3.push({
age:"小計(jì)"
})
}else {
for (let k=0;k<san.length;k++){
children3.push({
bmdm:san[k].bmdm,
xmlx:san[k].xmlx
})
}
}
}
kongarr.push(obj)
}
console.log("kongarr2", kongarr)
return kongarr
}js中三種主要的遍歷對(duì)象的方法
for inObject.keysObject.getOwnProperty
對(duì)非Array對(duì)象類(lèi)型的遍歷
1、for in
主要用于遍歷對(duì)象的可枚舉屬性,包括自有屬性、繼承自原型的屬性
var obj = {"name":"tom","sex":"male"};
Object.defineProperty(obj, "age", {value:"18", enumerable:false});//增加不可枚舉的屬性age
Object.prototype.protoPer1 = function(){console.log("name is tom");};//通過(guò)原型鏈增加屬性,為一個(gè)函數(shù)
Object.prototype.protoPer2 = 2;通過(guò)原型鏈增加屬性,為一個(gè)整型值2
console.log("For In : ");
for(var a in obj)
console.log(a);輸出的截圖為:

總結(jié):for in 主要用于遍歷對(duì)象的可枚舉屬性,包括自有屬性、繼承自原型的屬性,示例中的屬性age為不可可枚舉,所以沒(méi)有輸出。
2、Object.keys
此方法返回一個(gè)數(shù)組,元素均為對(duì)象自有可枚舉的屬性
var obj = {"name":"tom","sex":"male"};
Object.defineProperty(obj, "age", {value:"18", enumerable:false});//增加不可枚舉的屬性age
Object.prototype.protoPer1 = function(){console.log("name is tom");};//通過(guò)原型鏈增加屬性,為一個(gè)函數(shù)
Object.prototype.protoPer2 = 2;通過(guò)原型鏈增加屬性,為一個(gè)整型值2
console.log("Object.keys:")
console.log(Object.keys(obj));輸出的截圖為:

總結(jié):Object.keys主要用于遍歷對(duì)象自有的可枚舉屬性,不包括繼承自原型的屬性和不可枚舉的屬性。
3、Object.getOwnProperty
此方法用于返回對(duì)象的自有屬性,包括可枚舉和不可枚舉的屬性
Object.defineProperty(obj, "age", {value:"18", enumerable:false});//增加不可枚舉的屬性age
Object.prototype.protoPer1 = function(){console.log("name is tom");};//通過(guò)原型鏈增加屬性,為一個(gè)函數(shù)
Object.prototype.protoPer2 = 2;通過(guò)原型鏈增加屬性,為一個(gè)整型值2
console.log("Object.getOwnPropertyNames: ");
console.log(Object.getOwnPropertyNames(obj));輸出的截圖為:

總結(jié):Object.getOwnProperty主要用于返回對(duì)象的自有屬性,包括可枚舉和不可枚舉的屬性,不包括繼承自原型的屬性。
對(duì)Array對(duì)象類(lèi)型的遍歷
1、for in
var arr = [1,2,3,4,5,6]; for(var a in arr) console.log(a);
輸出的截圖為:

總結(jié):輸出為數(shù)組對(duì)象的index 值。
2、Object.keys
var arr = [1,2,3,4,5,6]; console.log(Object.keys(arr));
輸出的截圖為:

總結(jié):輸出為數(shù)組對(duì)象的index 值。
3、Object.getOwnProperty
var arr = [1,2,3,4,5,6]; console.log(Object.getOwnPropertyNames(arr));
輸出的截圖為:

總結(jié):輸出為數(shù)組對(duì)象的index 值和數(shù)組長(zhǎng)度的屬性值。
最后
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
layUI使用layer.open,在content打開(kāi)數(shù)據(jù)表格,獲取值并返回的方法
今天小編就為大家分享一篇layUI使用layer.open,在content打開(kāi)數(shù)據(jù)表格,獲取值并返回的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
JS中LocalStorage與SessionStorage五種循序漸進(jìn)的使用方法
這篇文章主要介紹了JS中LocalStorage與SessionStorage五種循序漸進(jìn)的使用方法,需要的朋友可以參考下2017-07-07
JavaScript實(shí)現(xiàn)讀取與輸出XML文件數(shù)據(jù)的方法示例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)讀取與輸出XML文件數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了JavaScript基于ActiveXObject實(shí)現(xiàn)載入、讀取與輸出xml文件數(shù)據(jù)的相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
Javascript 生成無(wú)限下拉列表實(shí)現(xiàn)代碼
js生成無(wú)線下拉列表的實(shí)現(xiàn)代碼。2009-03-03
淺談JavaScript的innerWidth與innerHeight
下面小編就為大家?guī)?lái)一篇淺談JavaScript的innerWidth與innerHeight。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10

