1. 程式人生 > >JavaScript知識點補充

JavaScript知識點補充

深拷貝

//遞迴方式
function deepCopy(source){
    if(!source || typeof source !== 'object'){
     throw new Error('error arguments', 'shallowClone');
   }
   var targetObj = source.constructor === Array ? [] : {};
   for(var keys in source){
      if(source.hasOwnProperty(keys)){
         if(source[keys] && typeof
source[keys] === 'object'){ targetObj[keys] = source[keys].constructor === Array ? [] : {}; targetObj[keys] = deepClone(source[keys]); }else{ targetObj[keys] = source[keys]; } } } return targetObj; }
// 利用JSON序列化實現一個深拷貝
function deepClone
(source){
return JSON.parse(JSON.stringify(source)); }

淺複製

function shallowCopy(source){
    if (!source || typeof source !== 'object') {
        throw new Error('error arguments');
    }
    var targetObj = source.constructor === Array ? [] : {};
    for (var keys in source) {
        if (source.hasOwnProperty(keys)) {
            targetObj[keys] = source[keys];
        }
    }
    return
targetObj; }

陣列分割成若干個n個數組

function getNewArr(arr,size){
  var result = []
  for (var i = 0; i < arr.length; i = i + size) {
    var tem = [];
    for (var j = i; j < size + i; j++) {
      if (j < arr.length) {
        tem.push(arr[j])
      }

    }
    result.push(tem)
  }
  return result;
}
var arr = [1, 2, 3, 4, 5, 6]
var size = 3
console.log(getNewArr(arr,size))

JS獲取頁面所有元素並統計每個標籤的個數


var tags = document.getElementsByTagName('*');
var tagsArr = [];

for(var i=0;i<tags.length;i++){
  tagsArr.push((tags[i].tagName).toLocaleUpperCase())
}
//去重函式,返回json資料
function unique(arr) {
  var json = {}
  for (var i = 0; i < arr.length; i++) {
    !json[arr[i]] ? (json[arr[i]] = 1) : (json[arr[i]]++);
  }
  return json;
}
unique(tagsArr)