javascript中es5中的新增方法

184 阅读3分钟

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
  1. filter :查找满足条件的元素返回的是一个数组,而且是把所有满足条件的元素返回回来.
  2. 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,属性不可重写。