仅供学习参考,发现错请纠正,谢谢!
4,Array的every方法
//every 检测数组中的值是否存在满足条件的值,全部满足条件返回true和有一个不满足就返回false,不对空数组进行检测,不改变原数组
//语法:array.every(function(currentValue,index,arr), thisValue);
//注意:1,返回一个布尔值。2,原数组不变。
Array.prototype._every = function(fn){
//获取链接数组的参数param,同时用JSON可以深度拷贝数组Array
let new_arr = JSON.parse(JSON.stringify(this)),count = 0;
for(let i = 0;i < this.length; i++){
if(fn(this[i])){
count++;
}else{
return false;
}
if(count === this.length){
return true;
}
}
return true;
}
var everyArr = [2,3,4,1];
var bool0 = everyArr.every(function(index){
return index > 1;
});
var bool1 = everyArr._every(function(index){
return index > 1;
});
console.log(bool0);
console.log(bool1);
输出:
false
false
注意:
(1,在谷歌浏览器测试的时候,this === null,直接返回true,所以我在全局直接返回了一个true,但是我感觉判断有问题
5,Array的fill方法
//fill 用于将一个固定值替换数组的元素。
//语法:array.fill(value, start, end);
//注意:1,返回一个数组。2,改变原来的数组。
Array.prototype._fill = function(value, start, end){
//获取链接数组的参数param,同时用JSON可以深度拷贝数组Array
let param = arguments, new_arr = JSON.parse(JSON.stringify(this)),that = this;
function loop(num0,num1){
let param0 = num0 || 0,param1 = num1 || new_arr.length;
for(let i = param0; i < param1 ; i++){
that[i] = param[0];
}
}
if(param.length === 1){
loop();
}else if(param.length === 2){
loop(param[1]);
}else if(param.length === 3){
loop(param[1],param[2]);
}
return that;
}
var fillArr = [1,2,3,4,5,6];
var fillArr0 = [1,2,3,4,5,6];
console.log(fillArr.fill(3,0));
console.log(fillArr);
console.log(fillArr0._fill(3,0));
console.log(fillArr0);
注意:
(1,由于在loop函数中用了外部的this,所以需要在外部留住this
Array.prototype.fill = function(value) {
// Steps 1-2.
var O = Object(this);
// Steps 3-5.
var len = parseInt(O.length);
// Steps 6-7.
var relativeStart = parseInt(arguments[1] || 0);
// Step 8.
var k = relativeStart < 0
? Math.max(len + relativeStart, 0)
: Math.min(relativeStart, len);
// Steps 9-10.
var relativeEnd = parseInt(arguments[2] || len);
// Step 11.
var final = relativeEnd < 0
? Math.max(len + relativeEnd, 0)
: Math.min(relativeEnd, len);
// Step 12.
for (; k < final; k++) {
O[k] = value;
}
// Step 13.
return O;
};
相关链接:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/fill