js之遍歷嵌套數組對象方式
js遍歷嵌套數組對象
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:"小計"
})
}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中三種主要的遍歷對象的方法
for inObject.keysObject.getOwnProperty
對非Array對象類型的遍歷
1、for in
主要用于遍歷對象的可枚舉屬性,包括自有屬性、繼承自原型的屬性
var obj = {"name":"tom","sex":"male"};
Object.defineProperty(obj, "age", {value:"18", enumerable:false});//增加不可枚舉的屬性age
Object.prototype.protoPer1 = function(){console.log("name is tom");};//通過原型鏈增加屬性,為一個函數
Object.prototype.protoPer2 = 2;通過原型鏈增加屬性,為一個整型值2
console.log("For In : ");
for(var a in obj)
console.log(a);輸出的截圖為:

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

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

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

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

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

總結:輸出為數組對象的index 值和數組長度的屬性值。
最后
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
js循環(huán)map 獲取所有的key和value的實現代碼(json)
這篇文章主要介紹了js循環(huán)map 獲取所有的key和value的實現代碼(json),需要的朋友可以參考下2018-05-05

