数组方法 ^
迭代遍历方法: forEach(),map(),filter(),some(),every()
那么这几种方法有什么区别呢?
forEach()
- 遍历数组
// 语法 array.forEach(function(currentValue,index,arr))
/*
* currentValue 每一个数组元素
* index 数组当前项的索引
* array 数组对象本身
*/
let arr = [1,2,3];
arr.forEach(function(value,index,array){
console.log('每一个数组元素'+value);
console.log('每一个数组元素下标'+index);
console.log('数组本身'+array);
})
map()
- 返回一个新数组,数组中的元素为原数组元素调用函数处理后的值
- map方法按照原始数组元素顺序依次处理元素 并且不改变原数组
// 语法 array.map(function(currentValue,index,arr),thisValue)
/*
* currentValue 每一个数组元素
* index 数组当前项的索引
* array 数组对象本身
*/
let arr = [1,2,3];
let newArr = arr.map(function (value,index,array) {
return value * 2;
});
console.log(newArr); // [2,4,6]
filter()
- 主要用于筛选数组 注意它直接返回一个新数组
// 语法 array.filter(function(currentValue,index,arr))
/*
* currentValue 每一个数组元素
* index 数组当前项的索引
* array 数组对象本身
*/
let arr = [21,3123,321,2,12];
let newArr = arr.filter(function (value,index,array) {
// return value < 20;
return value % 2 !== 0 ;
});
console.log(newArr); // [21,3123,321]
some()
- 查找数组中是否有满足条件的元素
- 它的返回值是布尔值,如果查找到这个元素,就返回true,查不到就返回false
- 如果找到第一个满足条件的元素,则终止循环,不在继续查找
// 语法 array.some(function(currentValue,index,arr))
/*
* currentValue 每一个数组元素
* index 数组当前项的索引
* array 数组对象本身
*/
let arr = [10,30,4];
let flag = arr.some(function (value,index,array) {
return value > 20;
});
console.log(flag); // true
let arr1 = ['张三','李四','王麻子'];
let flag1 = arr.some(function (value,index,array) {
return value == '贝贝奇';
});
console.log(flag1); // false
every()
- 用于检测数组所有元素是否都符合指定条件(通过函数提供)
- 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测
- 如果所有元素都满足条件,则返回 true.
// 语法 array.some(function(currentValue,index,arr))
/*
* currentValue 每一个数组元素
* index 数组当前项的索引
* array 数组对象本身
*/
let arr = [2,4,6,1];
let flag = arr.every(function (value,index,array) {
return value % 2 === 0;
});
console.log(flag); // false
字符串方法 ^
trim()
- 该会从字符串的两端删除空白字符
- trim方法并不影响原字符串本身,它返回一个新的字符串
let str = ' beibei ';
console.log(str); // beibei
console.log(str.length); // 8
let newStr = str.trim();
console.log(newStr); // beibei
console.log(newStr.length); // 6
console.log('-----------------');
对象方法 ^
Object.keys()
- 用于获取对象自身所有的属性名,返回一个由属性名组成的数组
let obj = {
name: 'beibei',
age: 18,
sex: '男'
};
let arr = Object.keys(obj);
console.log(arr); // ['name','age','sex']
Object.defineProperty()
- 定义新属性或修改原有的属性
语法格式
Object.defineProperty(obj,prop,descriptor);
/*
obj: 必须 目标对象
prop 必须 需定义或修改的属性的名字
descriptor 必须 目标属性所拥有的特性
*/
/*
第三个参数descriptor说明:以对象形式书写
value:设置属性的值 默认为undefined
writable 值是否可以重写 true|false 默认为false
enumerabte 目标属性是否可以被枚举 true|false 默认为false
configurable 目标属性是否可以被删除或是否可以再次修改特性 true|false 默认为false
*/
添加属性和修改属性
let obj = {
id:1,
name: 'beibei',
age: 18,
sex: '男'
};
// 添加属性
Object.defineProperty(obj, 'xueli', {
value: '大专'
});
console.log(obj);
// 修改属性
Object.defineProperty(obj, 'age', {
value: 21
})
console.log(obj);
第三个参数属性设置问题
// writable 意思就是是否可以修改
let obj = {
id:1,
name: 'beibei',
age: 18,
sex: '男'
};
Object.defineProperty(obj,'id',{
writable:false // 默认为false不允许修改这个值
});
obj.id = 2;
console.log(obj); // id依然为1
console.log('-----------------');
// enumerabte 意思就是能不能遍历出来
Object.defineProperty(obj,'aihao',{
value:'睡觉',
enumerable:false, // 默认为false 不允许遍历出来
configurable:false
});
let arr = Object.keys(obj);
console.log(arr);
// configurable 默认false 不能被删除和不允许修改第三个参数里面的特性
obj.aihao = '打豆豆';
delete obj.aihao;
console.log(obj);

344

被折叠的 条评论
为什么被折叠?



