Jacke YueChao

Jacke YueChao的个人博客

0%

一、实现 forEach 方法

1
2
3
4
5
6
7
8
9
10
Array.prototype.myForEach = function (callback, context = window) {
// this=>arr
let self = this,
i = 0,
len = self.length;

for (; i < len; i++) {
typeof callback == "function" && callback.call(context, self[i], i);
}
};

二、实现 filter 方法

1
2
3
4
5
6
7
8
9
10
11
Array.prototype.myFilter = function (callback, context = window) {
let len = this.length;
(newArr = []), (i = 0);

for (; i < len; i++) {
if (callback.apply(context, [this[i], i, this])) {
newArr.push(this[i]);
}
}
return newArr;
};

三、实现 map 方法

  • 回调函数的参数有哪些,返回值如何处理
  • 不修改原来的数组
1
2
3
4
5
6
7
8
9
10
11
12
Array.prototype.myMap = function (callback, context) {
// 转换类数组
var arr = Array.prototype.slice.call(this), //由于是ES5所以就不用...展开符了
mappedArr = [],
i = 0;

for (; i < arr.length; i++) {
// 把当前值、索引、当前数组返回去。调用的时候传到函数参数中 [1,2,3,4].map((curr,index,arr))
mappedArr.push(callback.call(context, arr[i], i, this));
}
return mappedArr;
};

四、实现 reduce 方法

  • 初始值不传怎么处理
  • 回调函数的参数有哪些,返回值如何处理。
1
2
3
4
5
6
7
8
9
10
11
12
13
Array.prototype.myReduce = function (fn, initialValue) {
var arr = Array.prototype.slice.call(this);
var res, startIndex;

res = initialValue ? initialValue : arr[0]; // 不传默认取数组第一项
startIndex = initialValue ? 0 : 1;

for (var i = startIndex; i < arr.length; i++) {
// 把初始值、当前值、索引、当前数组返回去。调用的时候传到函数参数中 [1,2,3,4].reduce((initVal,curr,index,arr))
res = fn.call(null, res, arr[i], i, this);
}
return res;
};

五、Array 实现

1
2
3
4
5
6
7
8
9
10
11
// Array.isArray 实现
Array.myIsArray = function (o) {
return Object.prototype.toString.call(Object(o)) === "[object Array]";
};

console.log(Array.myIsArray([])); // true

// Array.of 实现
function ArrayOf() {
return [].slice.call(arguments);
}

一、作为一个前端 coder,需要注意哪些 SEO

  • 合理的 title、description、keywords:搜索对着三项的权重逐个减小,title 值强调重点即可,重要关键词出现不要超过 2 次,而且要靠前,不同页面 title 要有所不同;description 把页面内容高度概括,长度合适,不可过分堆砌关键词,不同页面 description 有所不同;keywords 列举出重要关键词即可
  • 语义化的 HTML 代码,符合 W3C 规范:语义化代码让搜索引擎容易理解网页
  • 重要内容 HTML 代码放在最前:搜索引擎抓取 HTML 顺序是从上到下,有的搜索引擎对抓取长度有限制,保证重要内容一定会被抓取
  • 重要内容不要用 js 输出:爬虫不会执行 js 获取内容
  • 少用 iframe:搜索引擎不会抓取 iframe 中的内容
  • 非装饰性图片必须加 alt
  • 提高网站速度:网站速度是搜索引擎排序的一个重要指标