用 Array 的 reduce 方法实现 map 方法(头条一面)

求一个字符串的字节长度

假设:一个英文字符占用一个字节,一个中文字符占用两个字节

function GetBytes(str) {
  var len = str.length
  var bytes = len
  for (var i = 0; i < len; i++) {
    if (str.charCodeAt(i) > 255) bytes++
  }
  return bytes
}
alert(GetBytes('你好,as'))

数组扁平化

数组扁平化是指将一个多维数组变为一维数组

;[1, [2, 3, [4, 5]]]------ > [1, 2, 3, 4, 5]

递归法:

function flatten(arr) {
  let res = []
  arr.map((item) => {
    if (Array.isArray(item)) {
      res = res.concat(flatten(item))
    } else {
      res.push(item)
    }
  })
  return res
}

手写原生 ajax

简单 GET 请求

function ajax(url, cb) {
  let xhr
  if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest()
  } else {
    xhr = ActiveXObject('Microsoft.XMLHTTP')
  }
  xhr.onreadystatechange = function () {
    if (xhr.readyState == 4 && xhr.status == 200) {
      cb(xhr.responseText)
    }
  }
  xhr.open('GET', url, true)
  xhr.send()
}

POST 请求则需要设置RequestHeader告诉后台传递内容的编码方式以及在 send 方法里传入对应的值

xhr.open('POST', url, true)
xhr.setRequestHeader(('Content-Type': 'application/x-www-form-urlencoded'))
xhr.send('key1=value1&key2=value2')

results matching ""

    No results matching ""