<script>
let arr = [{a: 1}, {b: 2}, {a:1, c: 3}, {d: 4}, {e: 5}, {f: 6}, {c: 3, a: 1}, {g: 7}, {h: 8}];
let map = {};
for (let i in arr) {
let obj = arr[i];
obj = hashObj(obj);
obj = JSON.stringify(obj);
if (Number(map[obj]) >= 0) {
console.log("第 " + map[obj] + " 个下标和第 " + i + " 个下标元素相同");
continue;
}
map[obj] = i;
}
console.log(arr);
// object 的 key 和 value 转 hashcode
function hashObj(obj) {
let newObj = {};
for (let key in obj) {
let keyHash = hashcode(key);
let val = obj[key];
let valHash = 0;
if (val && typeof val === 'object') {
valHash = hashObj(val);
}
else {
valHash = hashcode(JSON.stringify(val));
}
newObj[keyHash] = valHash;
}
return newObj;
}
// string 转 hashcode
function hashcode(str) {
let hash = 0;
for (let i = 0; i < str.length; i++) {
let chr = str.charCodeAt(i);
hash = ((hash << 5) - hash) + chr;
hash = hash & hash;
}
return hash;
}
</script>
js 判断对象内容是否一致
最新推荐文章于 2024-06-21 09:28:26 发布