前端小功能:陣列物件是否相等
阿新 • • 發佈:2020-12-15
前端小功能:陣列物件是否相等,是否一致。
JS 判斷兩個陣列是否相同
JSON.stringify([1,2,3].sort()) === JSON.stringify([3,2,1].sort()); //true
JS 判斷兩個陣列物件是否相等
花了一天的時間,去實現兩個物件是否相等的情況,具體程式碼如下:
export function isEqual(a, b) { let Equal = true if((typeof a) === 'object' && (typeof b) === 'object'){ let aProps = Object.getOwnPropertyNames(a); let bProps= Object.getOwnPropertyNames(b); if (aProps.length !== bProps.length) { Equal = false; return Equal } // eslint-disable-next-line @typescript-eslint/prefer-for-of for (let i = 0; i < aProps.length; i++) { let propName = aProps[i] let propA = a[propName] let propB= b[propName] if((typeof propA) === 'object' && (typeof propB) === 'object'){ if(!isEqual(propA, propB)){ Equal = false; return Equal } }else if(propA !== propB){ Equal = false return Equal } } }else if(a !== b){ Equal= false return Equal } return Equal }
然後花了一個小時,去查一下其他的庫。
開箱即用:https://www.lodashjs.com/docs/lodash.isEqual
執行深比較來確定兩者的值是否相等。
**注意: **這個方法支援比較 arrays, array buffers, booleans, date objects, error objects, maps, numbers,Object
objects, regexes, sets, strings, symbols, 以及 typed arrays.Object
物件值比較自身的屬性,不包括繼承的和可列舉的屬性。不支援函式和DOM節點比較。
發現lodash非常的好。建議前端必須掌握,減少50%資料處理的時間,如果自己想了解原理的話,自己擼一波還是很好的。
lodash 中文文件:https://www.lodashjs.com/