var array = [66,77,88];
for(var i =0;i<array.length;i++){
console.log(array[i]);
}
console.log("\n============")
for(var i in array){
console.log(array[i]);
}
console.log("\n============")
for(var item of array){
console.log(item);
}


如下:
var array = [66,77,88];
console.log("\n=====1.1=======\n\n")
array.forEach(function(value){
console.log(value);
});
console.log("\n====1.2========\n\n")
array.forEach(function(value,index){
console.log(`${index}--->${value}`);
});
function Dog(name,age){
this.name = name;
this.age = age;
}
var d1 = new Dog("麦兜",3);
var d2 = new Dog("贝塔",2);
var dogArray = [d1,d2];
console.log("\n\n\n=====2.1=======\n\n\n")
dogArray.forEach(function(dog){
console.log(dog);
})
console.log("\n=====2.2=======\n\n")
dogArray.forEach(function(dog,index){
console.log(index + '---->' + JSON.stringify(dog));
})

代码简洁很多,如下:
var array = [66,77,88];
console.log("\n=====1.1=======\n\n")
array.forEach(value=>console.log(value));
console.log("\n====1.2========\n\n")
array.forEach((value,index)=>{
console.log(`${index}------${value}`);
})
function Dog(name,age){
this.name = name;
this.age = age;
}
var d1 = new Dog("麦兜",3);
var d2 = new Dog("贝塔",2);
var dogArray = [d1,d2];
console.log("\n\n\n=====2.1=======\n\n\n")
dogArray.forEach(dog=>console.log(dog))
console.log("\n=====2.2=======\n\n")
dogArray.forEach((dog,index)=>console.log(index + '---' + JSON.stringify(dog)))

filter(callbackFn)
filter(callbackFn, thisArg)


const array = [66,77,88];
//1. 箭头函数回调
const newArray_1 = array.filter(arr => arr > 70);
//2. 匿名函数回调
const newArray_2 = array.filter(function(arr){
return arr > 70;
});
//3. 普通函数回调
function myFilter(val){
if(val > 70){
return true;
}else{
return false;
}
}
const newArray_3 = array.filter(myFilter);

代码如下:
console.log("\n\n====1. 排除第一个元素=====\n\n");
const numArray_1 = [6,7,8];
const new_numArray_1 = numArray_1.filter((item,index,array)=>{
array[index+1] += 10; //修改的是下一个元素,影响了初始数组,但是数组中第一个数据不动,其余+10
return item > 10; //除了第一个元素,其余判断时都已经 +10 了
});
console.log(numArray_1);//[6, 17, 18, NaN]
console.log(new_numArray_1);// [17, 18]
console.log("\n\n====2. 所有元素+10 后都判断=====\n\n");
const numArray_2 = [6,7,8];
const new_numArray_2 = numArray_2.filter((item,index,array)=>{
array[index] += 10; //从当前元素就改变,即:该变了数组中所有元素
return array[index] > 10;
/**需要注意的是:
* 这个只是过滤条件,装入新数组的是item,
* 当前循环时item的值并没有改变(当前下标在数组中的元素值没有改变),
* 所以装入新数组的是老数据
*/
});
console.log(numArray_2);//[16, 17, 18]
console.log(new_numArray_2);//[6, 7, 8]

<script>
const pets = ['dog-麦兜','dog-泡泡','cat-阿苔','dog-lucky','cat-点点'];
const strs = ['I love you','love?','no','he is hate','love me?'];
function filterIterms(array,query){
return array.filter(arr => arr.includes(query.toLowerCase()));
}
let dogs = filterIterms(pets,'dog');
let cats = filterIterms(pets,'cat');
let loveStr = filterIterms(strs,'LOve');
console.log(dogs);
console.log(cats);
console.log(loveStr);
</script>

map(callbackFn)
map(callbackFn, thisArg)


代码如下:
const numArray = [1,3,5,7];
const new_numArray = numArray.map(num => num*2 );
console.log(numArray);
console.log(new_numArray);

代码如下:
const kvArray = [
{ key: 1, value: 10 },
{ key: 2, value: 20 },
{ key: 3, value: 30 },
];
const reformattedArray = kvArray.map(( {key, value} )=>{
return ({[key]: value});
});
console.log(kvArray);
console.log("\n\n======重新格式化数据之后=====\n\n");
console.log(reformattedArray); // [{ 1: 10 }, { 2: 20 }, { 3: 30 }]

更多使用请参考官网:
官网——Array.prototype.map().
初试值 + 数组中的每个元素。reduce(callbackFn)
reduce(callbackFn, initialValue)



代码如下:
<script>
const numArray = [1,2,3,4];
/**
* 没有初试值时:
* 1. accumulator的值:在第一次调用时,如果没有指定 初始值 则为 数组中的第一个值;
* 2. 并且 callbackFn 从数组中的第二个值作为 currentValue 开始执行。
*/
const result_1 = numArray.reduce((accumulator, currentValue)=>{
console.log(currentValue);
return accumulator + currentValue;
});
console.log("结果:" + result_1);//没有初试值:1+2+3+4 = 10
console.log("\n\n\n========给初试值的情况======\n\n\n");
/**
* 有初试值:
* 1. accumulator的值:在第一次调用时,如果指定了 初始值 则为指定的初始值
* 2. callbackFn 从数组中的第一个值作为 currentValue 开始执行
*/
const result_2 = numArray.reduce((accumulator, currentValue)=>{
console.log(currentValue);
return accumulator + currentValue;
},200); //指定初试值:200
console.log("结果:" + result_2);//有初试值:200+1+2+3+4 = 210
</script>

<script>
function Dog(dogName,dogAge){
this.dogName = dogName,
this.dogAge = dogAge
}
let dog_1 = new Dog('麦兜',3);
let dog_2 = new Dog('泡泡',5);
let dog_3 = new Dog('大牙',2);
const dogs = [dog_1,dog_2,dog_3];
// console.log(dogs);
const sumAge = dogs.reduce((pre,cur)=>{
return pre + cur.dogAge;
},0);
console.log(sumAge);
</script>

如下:
//展平嵌套数组
const array = [[1,2],[3,4],[5,6]];
const new_array = array.reduce((accumulator, currentValue)=>{
return [...accumulator,...currentValue];
});
console.log(new_array);

如下:
//统计对象中值的出现次数
const strs = ['you','love','I','love','beautiful','go'];
const count_result = strs.reduce((countSum,currentStr)=>{
if(currentStr === 'love'){
return countSum + 1;
}
return countSum;
},0);
console.log("love 单词出现的次数:" + count_result);

//去重
const strs = ['you','love','go','love','beautiful','go'];
let result = strs.reduce((countSum,currentStr)=>{
if(countSum.includes(currentStr)){
return countSum;
}else{
return [...countSum,currentStr];
}
},[]);
console.log(strs);
console.log(result);
