1. 程式人生 > 實用技巧 >js中物件陣列遍歷,及區別

js中物件陣列遍歷,及區別

var student = {
      name:"李四",
      age:19,
      address:"武漢"
  }

//遍歷物件的屬性
for(let a in student){
      console.log(a)   // name age address
}

//es6遍歷物件屬性
Object.keys(student)   //["name", "age", "address"]

//遍歷物件的值
Object.values(student)  //["李四",19,"武漢"]
陣列的迭代方法:every、filter、forEach、map、some均不能使用break或者continue進行中斷迴圈。
var person =
[ {name:
"小王",age:19,add:"湖北武漢"},


{name:"小李",age:99,add:"湖北隨州"},
]

 for(let i = 0; i<person.length; i++ ){
     console.log(person[i])
 }
for(let a of person){
    console.log(a)     //陣列中的每個物件
}

//輸出的都是每個陣列元素的value
for(let val of person.values()){ 
console.log(val)

}

//輸出的都是每個陣列元素的index。

for(let index of person.keys()){

 console.log(index)

}

//配合解構使用,可以拿到元素的index和value。
for (let [index, val] of person.entries()) {
console.log(index, val);
}


person.forEach(當前元素物件,當前元素索引,當前元素所在的陣列){}

//map對資料中的每項進行操作返回一個新的陣列,不會改變原陣列
結果: ["我來自{item.add}", "我來自{item.add}"]
var newPerson = person.map((item,index,arr)=>{
   
return `我來自{item.add}` // })

//filter 返回當前符合條件的新陣列,不會改變原陣列
var newData = person.filter(item=>{
return item.name =='小王'
})

//find返回資料中符合條件的一個物件,都沒有符合就返回undefiend
var findData = person.find((item)=>{
return item.age > 18
})

//findIndex 返回陣列中符合條件的元素索引,沒有就返回-1

var findIndex = person.findIndex(item=>{
return item.age === 19
})

//every檢查陣列中是否都符合,符合true  some檢查陣列中的是否有符合條件的有true

var everyData = person.every(item=>{
return item.age >= 99
})

var someData = person.some(item=>{
return item.age >= 99
})