Es5新增陣列和物件

2021-08-01 02:01:59 字數 4002 閱讀 2952

為了更方便的對js中array的操作,es5規範在array的原型上新增了9個方法,分別是foreach、filter、map、reduce、reduceright、some、every、indexof 和 lastindexof,

foreach(callback[,thisarg]) 替代for in 會遍歷出陣列新增元素

//遍歷陣列

var arr = [1,'xx','yy'];

arr['name'] = 'zhangsan';

//es5

arr.foreach(function

(value,key,arr)

);/* 結果 不會將後面新增加入

* 10 [1, "xx", "yy", name: "zhangsan"]

* xx 1 [1, "xx", "yy", name: "zhangsan"]

* yy 2 [1, "xx", "yy", name: "zhangsan"]

* */

相容擴充套件

if(!array.prototype.foreach)

}}

filter(callback[,thisarg]) – 用於過濾陣列 返回新陣列

var arr = [1,5,9];

arr['name'] = 'zhangsan';

//es5

var newarr = arr.filter(n=>);

console.log(arr);//[ 1, 5, 9, name: 'zhangsan' ]

console.log(newarr);//[ 5, 9 ]

var newarr = arr.filter(function

(item) );

相容擴充套件

if(!array.prototype.filter)

}return newarr;

}}

map(callback[,thisarg]) – 用於加工陣列元素 返回新陣列

var arr = [1,5,9];

arr['name'] = 'zhangsan';

//item

var newarr = arr.map(function

(item) );

// var newarr = arr.map(item=>item+3);

console.log(arr);//[ 1, 5, 9, name: 'zhangsan' ]

console.log(newarr);//[ 4, 8, 12 ]

相容擴充套件

if (!array.prototype.map) 

return newarr;

}}

reduce(callback[,initialvalue]) – 返回新陣列 預設左向右

reduceright(callback[,initialvalue])

reduce的作用完全相同,唯一的不同是,reduceright是從右至左遍歷陣列的元素。

var arr = [1,2,3,4];

var result = arr.reduce(function

(previousvalue, currentvalue, currentindex, array));

/* 1 2 1

* 3 3 2

* 6 4 3

* */

console.log(result);//10

reduce實現了陣列元素的累加,reduce接收4個引數,previousvalue中存放的是上一次callback返回的結果,currentvalue是當前元素,currentindex是當前元素位置,array是當前陣列。previousvalue初始值為陣列的第乙個元素,陣列從第2個元素開始遍歷。

ps: 前兩個引數是必須。

initialvalue

var arr = [1,2,3,4];

var result = arr.reduce(function

(previousvalue, currentvalue, currentindex, array),20);

/* 20 1 0

* 21 2 1

* 23 3 2

* 26 4 3

* */

console.log(result);//30

從執行結果看,initialvalue引數指定了previousvalue的初始值,更重要的是,這次陣列是從第1個位置開始遍歷,而不再是從第2個位置開始了。

相容擴充套件

if (!array.prototype.reduce) 

return previousvalue;

}}

some(callback[,thisarg]) – 用於檢測陣列元素 返回布林值

some是某些、一些的意思,因此,some的作用是檢測陣列中的每乙個元素,當callback返回true時就停止遍歷,(有任意乙個滿足條件就停止並返回true),並返回true

var arr = [1, 2, 3, 4];

var result = arr.some( function

( item, index, array ));

/* 1 0 [ 1, 2, 3, 4 ]

* 2 1 [ 1, 2, 3, 4 ]

* */

console.log(result);//true

相容擴充套件

if (!array.prototype.some) 

}return

false;

}}

every(callback[,thisarg]) – 用於檢測陣列元素 返回布林值

every是每乙個的意思,相比some來講,every對元素的檢測應該更加嚴格

var arr = [1, 2, 3, 4];

var result = arr.every( function

( item, index, array ));

/* 1 0 [ 1, 2, 3, 4 ]

* */

console.log(result);//false

相容擴充套件

if (!array.prototype.every) 

}return

true;

}}

var obj = object.create({}, 

}});object.defineproperty(obj,'gf',);

console.log(obj.i);//300

console.log(obj.gf);//xadqw

obj.i = 3000;

obj.j = 'add';

// delete obj.i;//刪除

for (var v in obj)

object繫結作用域

var  obj = 

};var f = obj.f.bind(obj);//this繫結在obj上

f();//張三

ES5 新增陣列操作

var arr 1,2,3,4,5 for var i 1 i 對陣列每一項進行操作 返回乙個新陣列 var map arr arr.map item 結果 2,4,6,8,10 過濾器 對陣列每一項進行操作 將滿足條件的項返回為乙個新陣列 var filter arr arr.filter ite...

ES5新增 陣列,字串,物件方法

迭代方法 foreach map filter some every foreach array.foreach function currentvalue,index,arr currentvalue 陣列當前項的值 index 陣列當前項的索引 arr 陣列物件本身 var arr 1,2,3 ...

ES5新增方法

語法 arr.foreach function value,index,array value 陣列當前項的值 index 陣列當前的索引 array 陣列物件本身 var arr 1,2,3 arr.foreach function value,index,array 輸出 每個陣列元素1 每個陣...