第一版
1、for 循环
for (let i = 0; i < 10; i++) {
console.log(i);
}
2、for in 遍历 key:val
let obj = { age: 1, name: "stank1", school: "shanghai" };
for (let i in obj) {
// console.log(i); //key
// console.log(obj[i]);//val
if (obj.hasOwnProperty(i)) {
//hasOwnProperty是否为自身的属性
console.log(i);
console.log(obj[i]);
}
}
3、 for of
- 可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句 //- obj 是不可迭代
let arr = [1, 2, 3, 4, 5];
obj = { name: "Json", [Symbol("1")]: 9527, [Symbol("2")]: 9528, age: 12 };
for (let i of arr) {
console.log(i);
}
for (let k of obj) {
console.log(k); //obj is not iterable
}
4、map()
- 给原数组中的每个元素都按顺序调用一次 callback 函数。callback 每次执行后的返回值(包括 undefined)组合起来形成一个新数组
- let newArray = arr.map(callback(currentValue, index, array) {
// Return element for newArray
}, thisArg) - 返回值:newArr
let arr = [1, 2, 3, 4];
let newArr = arr.map((item, index, arr) => {
// console.log(item,index,arr);
return (item += 1);
});
console.log(arr, newArr);
["1", "2", "3"].map((str) => parseInt(str));
["1", "2", "3"].map((str) => Number(str)); [1,2,3]
5、forEach()
- 对数组的每个元素执行一次给定的函数
- arr.forEach(callback(currentValue , index , array), thisArg)
- 返回值:undefined
let arr = [1, 2, 3, 4];
let newArr = arr.forEach((item, index, arr) => {
console.log(item, index, arr);
return (item += 1);
});
console.log(arr, newArr);
6、filter()
- 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
- let newArray = arr.filter(callback(element, index, array), thisArg) -返回值: 一个新的、满足条件的元素组成的数组,如果没有任何数组元素满足条件,则返回空数组。
let arr = [1, 2, 3, 4, 5];
let newArray = arr.filter((item) => {
return item <= 2;
});
console.log(arr, newArray);//[1, 2, 3, 4, 5] false
7、every()
- 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试
- arr.every(callback(element, index, array), thisArg) -返回值: 如果回调函数的每一次返回都为 truthy 值,返回 true ,否则返回 false
- 返回值:truthy(真值)指的是在布尔值上下文中,转换后的值为真的值。所有值都是真值,除非它们被定义为 假值(即除 false、0、""、null、undefined 和 NaN 以外皆为真值)
let arr = [1, 2, 3, 4, 5];
let newArray = arr.every((item) => {
return item <= 2;
});
console.log(arr, newArray); //[1, 2, 3, 4, 5] false
8、some()
- 方法测试数组中是不是至少有 1 个元素通过了被提供的函数测试。
- arr.some(callback(element, index, array), thisArg)
- 返回值:Boolean
let arr = [1, 2, 3, 4, 5];
let newArray = arr.some((item) => item >= 5);
console.log(newArray); // true
9、while
- 先循环,直到条件为 true 时停止循环
- while (条件) 逻辑
let a = 0;
let b = 0;
while (a < 2) {
a++;
b += a;
console.log(a, b);
}
10、do while
- 至少执行 1 遍
- do{逻辑} while (条件)
let a = 0;
let b = 0;
do {
a++;
b += a;
console.log(a, b);
} while (a < 0);
11、Object.keys()
- 要返回其枚举自身属性的对象
- Object.keys(obj)
- 返回值:自身属性 list
let obj = { age: 1, name: "stank1", school: "shanghai" };
console.log(Object.keys(obj)); //[ 'age', 'name', 'school' ]
12、Object.getOwnPropertyNames()
- 返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括 Symbol 值作为名称的属性)组成的数组
- Object.getOwnPropertyNames(obj)
- 返回值:包括不可枚举属性但不包括 Symbol 值作为名称的属性 list
let obj = { age: 1, name: "stank1", school: "shanghai" };
let arr = ["a", "b", "c"];
console.log(Object.getOwnPropertyNames(obj)); //[ 'age', 'name', 'school' ]
console.log(Object.getOwnPropertyNames(arr)); //[ '0', '1', '2', 'length' ]
13、Object.getOwnPropertySymbols()
- 返回一个给定对象自身的所有 Symbol 属性的数组
- Object.getOwnPropertySymbols(obj)
- 返回值:给定对象自身上找到的所有 Symbol 属性的数组
let obj = { name: "Json", [Symbol("1")]: 9527, [Symbol("2")]: 9528, age: 12 };
console.log(Object.getOwnPropertySymbols(obj)); //[ Symbol(1), Symbol(2) ]
14、.Reflect.ownKeys
- 返回一个由目标对象自身的属性键组成的数组
- 返回值:返回值等同于 Object.getOwnPropertyNames(target).concat(ObjectgetOwnPropertySymbols(target))
let obj = { name: "Json", [Symbol("1")]: 9527, [Symbol("2")]: 9528, age: 12 };
console.log(Reflect.ownKeys(obj)); //[ 'name', 'age', Symbol(1), Symbol(2) ]