JavaScript知識點補充
阿新 • • 發佈:2019-01-06
深拷貝
//遞迴方式
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)