一、slice方法
1、作用
arr.slice();
数组截取元素,返回被截取的新元素,原数组不改变
var arr = [1, 2, 3, 4, 5];
// var arr2 = arr.slice(); //复制arr的所有元素给arr2,没有引用关系
// var arr2 = arr.slice(0); //复制arr的所有元素给arr2,没有引用关系
// var arr2 = arr.slice(3); //将数组从下标3开始到结尾截取形成新数组
// var arr2 = arr.slice(-2); //将数组从倒数第2位开始到结尾截取形成新数组
// var arr2 = arr.slice(3, 4); //将数组从下标3开始到下标4截取形成新数组
// var arr2 = arr.slice(-2, 4); //将数组从倒数第2位开始到下标4截取形成新数组
// var arr2 = arr.slice(-2, -1); //将数组从倒数第2位开始到倒数第1位截取形成新数组
// console.log(arr2, arr);
2、封装
Array.prototype.mySlice = function () {
var start = 0;
var end = this.length;
if (arguments.length === 1) {
start = arguments[0];
} else if (arguments.length === 2) {
start = arguments[0];
end = arguments[1];
}
var temp = [];
for (var i = start; i < end; i++) {
tmp.push(this[i]);
}
return temp;
}
3、应用
[].mySlice.call(fakeArr)
可以把伪数组fakeArr转为数组
二、find和findIndex方法
1、作用
find 接收一个方法作为参数,方法内部返回一个条件,find 会遍历所有的元素,执行你给定的带有条件返回值的函数,符合该条件的元素会作为 find 方法的返回值,如果遍历结束还没有符合该条件的元素,则返回 undefined
findIndex()函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1。
2、封装
Array.prototype.myFind = function (conditionFunc) {
for (var i = 0; i < this.length; i++) {
if (conditionFunc(this[i], i)) {
return this[i]
// return i // 返回索引,即fandIndex()方法
}
}
}
var ret = users.myFind(function (item, index) {
return item.id === 2
})