?? 循环 forEach,for in,for of
let array = [1, 2, 3, 4, 5, 6, 7];
var obj = { a: 1, b: 2, c: 3, d: "hello world" };
let mapData =[['lilei', 96], ['hanmeimei', 99]];
let str = "abscd";
//循环 forEach,for in,for of
// for in 数组和可枚举对象都ok,获取的是索引 (大部分用于对象)
for (let index in obj) {
//console.log(index, obj[index]);
}
//map 有返回值,返回一个新的数组,不改变原数组。
let newArr = array.map((item,index)=>{
return item*2
})
console.log(newArr); // [2,4,6,8,10,12,14]
//forEach的缺点只能遍历数组.没有返回值. 无法使用break,continue(可以借用return 跳过循环中的一个迭代)
array.forEach((v, index, array) => {
if(index==2){
return;
}
console.log(v);
});
//for of 可遍历数组,字符串, set合集类型 map映射类型 且可直接拿到值 不能直接遍历对象,可借助Object.keys()或者 Object.entries()
for (let v of str) {
//console.log(v);
}
console.log("============");
var set = new Set();
set.add("a").add("b").add("d").add("c");
var map = new Map();
map.set("a", 1).set("b", 2).set(999, 3);
for (let v of set) {
//console.log(v);
}
for (let [k, v] of mapData) {
//console.log(k, v);
}
for (let [k, v] of Object.entries(obj)) {
console.log(k, v);
}
总结:for in 数组和可枚举对象都ok,获取的是索引 (大部分用于对象)
?map 有返回值,返回一个新的数组,不改变原数组。
forEach的缺点只能遍历数组.没有返回值. 无法使用break,continue(可以借用return 跳过循环中的一个迭代)
for of 可遍历数组,字符串, set合集类型 map映射类型 且可直接拿到值 不能直接遍历对象,可借助Object.keys()
some、every
|