我有兩組JavaScript對象。我想比較object1和object2,然後獲取object1中所有鍵的列表,但不是object2中的所有鍵。我一直在尋找資源來幫助我,但我只是最終找到了簡單對象的比較函數。我想比較的對象有很多嵌套。我在底部包含了一個例子。比較兩個JavaScript對象的鍵
我該如何去做一個比較這兩個對象的函數?是否可以創建一個靈活的函數,如果對象要更改幷包含更多的嵌套,這也可以工作?
const object1 = {
"gender": "man",
"age": 33,
"origin": "USA",
"jobinfo": {
"type": "teacher",
"school": "Wisconsin"
},
"children": [
{
"name": "Daniel",
"age": 12,
"pets": [
{
"type": "cat",
"name": "Willy",
"age": 2
},
{
"type": "dog",
"name": "jimmie",
"age": 5
}
]
},
{
"name": "Martin",
"age": 14,
"pets": [
{
"type": "bird",
"name": "wagner",
"age": 12
}
]
}
],
"hobbies": {
"type": "football",
"sponsor": {
"name": "Pepsi",
"sponsorAmount": 1000,
"contact": {
"name": "Leon",
"age": 59,
"children": [
{
"name": "James",
"pets": [
{
"type": "dog",
"age": 4
}
]
}
]
}
}
}
}
const object2 = {
"gender": "man",
"jobinfo": {
"type": "teacher"
},
"children": [
{
"name": "Daniel",
"age": 12,
"pets": [
{
"type": "cat",
"name": "Willy",
"age": 2
},
{
"type": "dog",
"name": "jimmie",
"age": 5
}
]
}
]
}
所以,我想通過比較這兩個對象要實現什麼,在這種情況下有一個包含了在object1的按鍵陣列的回報,而不是對象2。所以數組看起來像這樣。
["age", "hobbies", "type", "sponsor", "name", "sponsorAmount", "contact", "name", "age", "children", "name", "pets", "type", "age"].
這是我到目前爲止得到的結果。這是有點工作。但是它不會打印出年齡,因爲age是一個存在於多個嵌套對象中的屬性。 的jsfiddle:https://jsfiddle.net/rqdgojq2/
我有一個看看下面的資源:使用設置對象和自定義getAllKeyNames()
遞歸函數
請添加想要的結果,你已經嘗試了什麼。也許看起來很值得:[mcve]。 –
對不起,我已經更新了帖子,並提供了更多信息。感謝您的反饋。 –
你還需要數組的索引嗎?你需要迭代順序的結果嗎? –