js 中簡單型別的比較是對具體值的比較;而對於引用型別的比較,其比較的是引用值是否相等。
這裡提供一種擴充套件方法,使得:
equal(1,1); equal(『a』,』a』); 自然都返回為 true
equal(,) ; 也能返回為 true ; equal(,) 返回 false
// 獲取複雜物件的型別
function
getobjtype
(obj)
// 物件是否為某乙個型別
function
istype
(obj, type)
/** * 僅比較值是否相等,不計較其記憶體位址是否同乙個
* equal(,) 返回 true
* 這裡不考慮函式的比較,直接執行預設的比較
*/function
isequal
(a, b)
if (typeofa !== 'object')
if (typeofa === 'object')
// 如果是陣列型別
if (objtypea === 'array')
else
}return
true;}}
// 如果是object型別
else
if (objtypea === 'object')
if (!isequal(a[attr], b[attr])) }}
// 如果是正則型別
else
if (objtypea === 'regexp')
// 如果是日期型別
else
if (objtypea === 'date')
} return
true;
}// 測試使用
console.log(isequal( }, })) // true
console.log(isequal([1, 2, 3], [1, 2, 3])) // true
console.log(isequal('1', 1)) // false
console.log(isequal(/a/, /a/)) // true
console.log(isequal(new
date(), new
date())) // true
var fn = function
()
console.log(isequal(fn, fn)) // true
var origindata = [,,
,,,,
,,,,
,];
預設用children
連線子級,可通過傳遞第三個引數linkkey
的值改變
function
totree
(arr, pid,linkkey='children')
treearr.push(tree);
})return treearr;
}// 使用
var formattree = totree(origindata, '0');
console.log(formattree)
注意,此處的引數treedata
為引用關係,在展平的過程中,用到了delete
,所以會影響到原資料,如果不想影響到原資料,需先拷貝要展平的資料,然後傳入拷貝的資料。
function
flattentree
(treedata, linkkey)
delete thrunk[linkkey]
result = result.concat(thrunk);
})return result;
} // 使用,先使用轉變為樹,又展平回去。
flattentree(totree(origindata, '0'),'children');
var arr = [1,[2,[3,[4,[5]]]]];
function
flatten
(arr, result = )
else
} return result;
}console.log(flatten(arr)); // [1,2,3,4,5]
todo JavaScript之Date日期物件擴充套件
各種時間加減 收藏起來以備後用 名稱 日期加法函式 引數 part year month day hour minute second millisecond 返回 date物件 date.prototype.add function part,value return this date.prot...
javascript基本學習
ecma 幾乎沒有相容性問題 dom 有一些操作不相容 bom 沒有相容問題 完全不相容 變數的型別 1 型別檢驗 typeof運算子 數字變數 number string boolean undefined object function 乙個變數應該只存放一種型別的資料 變數型別 2 資料型別轉...
JavaScript基本語法
一 資料型別 6類 數值型 int 整型 float 浮點型 字串型別 string 布林型boolean 物件型別object 空型別null 未定義型別undefined 變數被建立但未被賦值 二 變數 var 變數名 用var宣告變數 三 運算子 6類 1 賦值運算子 等 2 算數運算子 等 ...