js之遍歷嵌套數(shù)組對象方式
js遍歷嵌套數(shù)組對象
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 in
Object.keys
Object.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");};//通過原型鏈增加屬性,為一個函數(shù) Object.prototype.protoPer2 = 2;通過原型鏈增加屬性,為一個整型值2 console.log("For In : "); for(var a in obj) console.log(a);
輸出的截圖為:
總結(jié):for in 主要用于遍歷對象的可枚舉屬性,包括自有屬性、繼承自原型的屬性,示例中的屬性age為不可可枚舉,所以沒有輸出。
2、Object.keys
此方法返回一個數(shù)組,元素均為對象自有可枚舉的屬性
var obj = {"name":"tom","sex":"male"}; Object.defineProperty(obj, "age", {value:"18", enumerable:false});//增加不可枚舉的屬性age Object.prototype.protoPer1 = function(){console.log("name is tom");};//通過原型鏈增加屬性,為一個函數(shù) Object.prototype.protoPer2 = 2;通過原型鏈增加屬性,為一個整型值2 console.log("Object.keys:") console.log(Object.keys(obj));
輸出的截圖為:
總結(jié):Object.keys主要用于遍歷對象自有的可枚舉屬性,不包括繼承自原型的屬性和不可枚舉的屬性。
3、Object.getOwnProperty
此方法用于返回對象的自有屬性,包括可枚舉和不可枚舉的屬性
Object.defineProperty(obj, "age", {value:"18", enumerable:false});//增加不可枚舉的屬性age Object.prototype.protoPer1 = function(){console.log("name is tom");};//通過原型鏈增加屬性,為一個函數(shù) Object.prototype.protoPer2 = 2;通過原型鏈增加屬性,為一個整型值2 console.log("Object.getOwnPropertyNames: "); console.log(Object.getOwnPropertyNames(obj));
輸出的截圖為:
總結(jié):Object.getOwnProperty主要用于返回對象的自有屬性,包括可枚舉和不可枚舉的屬性,不包括繼承自原型的屬性。
對Array對象類型的遍歷
1、for in
var arr = [1,2,3,4,5,6]; for(var a in arr) console.log(a);
輸出的截圖為:
總結(jié):輸出為數(shù)組對象的index 值。
2、Object.keys
var arr = [1,2,3,4,5,6]; console.log(Object.keys(arr));
輸出的截圖為:
總結(jié):輸出為數(shù)組對象的index 值。
3、Object.getOwnProperty
var arr = [1,2,3,4,5,6]; console.log(Object.getOwnPropertyNames(arr));
輸出的截圖為:
總結(jié):輸出為數(shù)組對象的index 值和數(shù)組長度的屬性值。
最后
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JS實現(xiàn)橫向與豎向兩個選項卡Tab聯(lián)動的方法
這篇文章主要介紹了JS實現(xiàn)橫向與豎向兩個選項卡Tab聯(lián)動的方法,涉及JavaScript遍歷及動態(tài)修改頁面元素屬性的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-09-09js循環(huán)map 獲取所有的key和value的實現(xiàn)代碼(json)
這篇文章主要介紹了js循環(huán)map 獲取所有的key和value的實現(xiàn)代碼(json),需要的朋友可以參考下2018-05-05深入淺析javascript立即執(zhí)行函數(shù)
在Javascript中,任何function在執(zhí)行的時候都會創(chuàng)建一個執(zhí)行上下文,因為為function聲明的變量和function有可能只在該function內(nèi)部,這個上下文,在調(diào)用function的時候,提供了一種簡單的方式來創(chuàng)建自由變量或私有子function。2015-10-10JS復(fù)制對應(yīng)id的內(nèi)容到粘貼板(Ctrl+C效果)
這篇文章主要給大家介紹了利用JS實現(xiàn)復(fù)制指定對應(yīng)id的內(nèi)容到粘貼板(Ctrl+C效果),文中給出了詳細的介紹和示例代碼,有需要的朋友可以參考借鑒,下面來一起看看吧。2017-01-01