forEach 迭代(遍历)数组
语法:array.forEach(function(value[,index,array]){ ... }) value 是数组的值,index 是数组的索引,array 是数组的所有值。index 和 array 可写可不写,但是第一个参数的值一定是 value
var arr = [1, 2, 3];
var sum = 0;
arr.forEach(function (value, index, array) {
console.log("数组值为" + array + "索引为" + index + "的值是:" + value);
sum += value;
});
console.log("该数组的值的和是:" + sum);
/*
输出:
数组值为1,2,3索引为0的值是:1
数组值为1,2,3索引为1的值是:2
数组值为1,2,3索引为2的值是:3
该数组的值的和是:6
*/
filter() 筛选数组
语法:array.filter(function(currentValue[,index,arr])){return 返回满足条件的数组};
- filter()方法创建一个新的数组,新数组中国的元素是通过检查指定数组中复核条件的所有元素,主要用于筛选数组
- filter()返回的是一个新的数组
- currentValue:数组当前项的值
- index:数组当前项的索引
- arr:数组对象本身
var array = [3, 9, 5];
var arr = array.filter(function (value, index) {
return value > 3;
});
console.log(arr); //[9,5]
some() 检测数组中是否有满足条件的元素
语法:array.some(function(currentValue[,index,arr])){return 条件};
- some()方法用于检测数组中的元素是否满足指定条件.即查找数组中是否有满足条件的元素
- 注意它返回值是布尔值。如果查找到这个元素,就返回 true,如果查找不到就返回 false.
- 如果找到第一个满足条件的元素,则终止循环不在继续查找.
- currentValue:数组当前项的值
- index:数组当前项的索引
- arr:数组对象本身
var arr = [10, 25, 60];
var flag = arr.some(function (value) {
return value > 52;
});
console.log(flag); //true
- filter :查找满足条件的元素返回的是一个数组,而且是把所有满足条件的元素返回回来.
- some :查找满足条件的元素是否存在,返回的是一个布尔值.如果查找到第一个满足条件的元素就终止循环
map() 遍历数组
语法:array.map(function(currentValue[,index,arr])){return 表达式};
var arr = [1, 2, 3];
var arr2 = arr.map(function (value) {
return value + 1;
});
console.log(arr2);
map()遍历并处理每个元素,并且返回一个新的数组
every() 检测数组
语法:array.every(function(currentValue[,index,arr])){return 条件表达式};
var arr = [1, 5, 9, "a"];
var flag = arr.every(function (value) {
console.log(typeof value);
return typeof value == "number";
});
console.log(flag);
/*
输出:
number
number
number
string
false
*/
- 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
- 如果所有元素都满足条件,则返回 true。
-
every() 不会对空数组进行检测。
-
注意: every() 不会改变原始数组。
字符串方法 trim()
去除字符串两侧的空格,不改变原来的字符串,返回一个新的字符串。
var str = " 123 ";
var str1 = str.trim();
console.log(str1); //123
对象方法 Object.defineProperty()
定义新属性或修改原有的属性 Object.defineProperty(obj,prop,descriptor). obj: 要修改的对象 prop:要修改的属性 descriptor:描述,以对象形式书写
- value:设置属性的值,默认为undefined
- writable:值是否可以重写,true|false,默认为false
- enumerable: 目标属性是否可以被枚举,true|false,默认为false
- configurable:目标属性是否可以被删除 或是否可以再次修改特性(即修改value、writable、enumerable这些特性),true|false,默认为false
var obj = {
id: 1,
pname: "小米",
price: 9561,
};
console.log(obj);
Object.defineProperty(obj, "id", {
value: 90,
});//修改obj的id为90
Object.defineProperty(obj, "id", {
value: 190,
}); //修改obj的id为190
console.log(obj);//{id: 190, pname: "小米", price: 9561}
Object.defineProperty(obj, "num", {
value: 10,
});
console.log(obj); //{id: 190, pname: "小米", price: 9561, num: 10}
Object.defineProperty(obj, "num", {
value: 100,
}); //通过definProperty定义的新属性不能重写
Object.defineProperty(obj,'address'{
value:'中国山东蓝翔',
enumerable: false,
})
Object.keys(obj);//["id","pname","price"],没有address,因为不可枚举(遍历)出来,而num是因为默认的enumerable就是false
- 如果属性在对象中已存在,则修改其属性值,不修改其writable、enumerable等属性,writable为true。
- 如果属性在对象中不存在,则向该对象添加该属性,writable默认为false,属性不可重写。