问题类似于:如何检查两个对象是否具有相同的属性名称集?但只有一个区别
我想查一下:
var objOne = {"a":"one","b":"two","c":{"f":"three_one"}};
var objTwo = {"a":"four","b":"five","c":{"f":"six_one"}};
Run Code Online (Sandbox Code Playgroud)
在所有级别都有相同的密钥集?
例如deepCheckObjKeys(objOne, objTwo)将返回true那里deepCheckObjKeys(objOne, objThree)回报false,如果:
var objThree = {"a":"four","b":"five","c":{"g":"six_one"}};
Run Code Online (Sandbox Code Playgroud)
因为objThree.a.c.f是undefined在objThree.
像这样的函数:
'使用严格';
function objectsHaveSameKeys() {
for (var _len = arguments.length, objects = Array(_len), _key = 0; _key < _len; _key++) {
objects[_key] = arguments[_key];
}
var allKeys = objects.reduce(function (keys, object) {
return keys.concat(Object.keys(object));
}, []);
var union = new Set(allKeys);
return objects.every(function …Run Code Online (Sandbox Code Playgroud) 假设有两个Map对象,如何检查它们的键集是否相同?
例如:
const A = new Map();
A.set('x', 123);
A.set('y', 345);
const B = new Map();
B.set('y', 567);
B.set('x', 789);
const C = new Map();
C.set('x', 121);
C.set('y', 232);
C.set('z', 434);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,两者A和B地图具有相同的密钥集(即['x', 'y']),而密钥集C是不同的,因为它具有额外的密钥z.