私はオブジェクトの2つの配列を持っており、条件に基づいてキーの値を取得したい。別のオブジェクトのキーに基づいてキーの値を取得
deltaArrのキーgoogleId
に基づいて、古い配列の値をid
にしたいと考えています。 oldArrのgoogleIdと
だから、ときgoogleId deltaArrの試合、私は、アレイ内のそのインデックスと店でoldArrのid
を取得したいです。
function getPrimaryKeys(deltaArr, oldArr){
console.log('deltaArr........ ', JSON.stringify(deltaArr, null, 2));
console.log('oldArr........ ', JSON.stringify(oldArr, null, 2));
var primaryKeys = [];
for(var i = 0; i< deltaArr.length; i++){
if(deltaArr[i].hasOwnProperty('googleId') && deltaArr[i].googleId == oldArr[i].googleId){
primaryKeys.push(oldArr[i].id);
}
}
return primaryKeys;
}
deltaArr:
[
{
"contact": {
"address": {
"home": "",
"office": ""
},
"email": {
"home": "",
"other": "",
"work": ""
},
"im": {
"aim": "",
"icq": "",
"skype": ""
},
"phone": {
"cell": "+91-1234-567-891",
"home": "",
"work": "",
"e164": "+911234567891"
}
},
"googleId": "2bf235bd8a846814",
"createdDate": "2016-12-31T13:03:09.203Z",
"name": "Test1",
"profileData": ""
}
]
oldArr:
[
{
"contact": {
"address": {
"home": "",
"office": ""
},
"email": {
"home": "",
"other": "",
"work": ""
},
"im": {
"aim": "",
"icq": "",
"skype": ""
},
"phone": {
"cell": "+91-1234-567-896",
"e164": "+911234567896",
"home": "",
"work": ""
}
},
"createdDate": "2016-12-31T12:59:08.959Z",
"googleId": "3e98af288ff825f7",
"id": "2e4009de-4bce-4f02-b33c-415ad688f1c2",
"name": "Test6",
"profileData": ""
},
{
"contact": {
"address": {
"home": "",
"office": ""
},
"email": {
"home": "",
"other": "",
"work": ""
},
"im": {
"aim": "",
"icq": "",
"skype": ""
},
"phone": {
"cell": "+91-1234-567-890",
"e164": "+911234567890",
"home": "",
"work": ""
}
},
"createdDate": "2016-12-31T12:59:08.952Z",
"googleId": "2bf235bd8a846814",
"id": "411b2507-64a1-46d6-812b-8216446676e3",
"name": "Test0",
"profileData": ""
},
{
"contact": {
"address": {
"home": "",
"office": ""
},
"email": {
"home": "",
"other": "",
"work": ""
},
"im": {
"aim": "",
"icq": "",
"skype": ""
},
"phone": {
"cell": "+91-1234-567-895",
"e164": "+911234567895",
"home": "",
"work": ""
}
},
"createdDate": "2016-12-31T12:59:08.951Z",
"googleId": "20735d9e8df44423",
"id": "46f579cb-dbda-49f1-8eb6-df621692e023",
"name": "Test5",
"profileData": ""
}
]
あなたは"googleId": "2bf235bd8a846814"
が表示された場合の配列の両方に存在します。 Iは、上記を試したが、そのはundefined
注与える:両方の配列の長さは、動的データに基づいて変化します。この場合、私はあなたが知らgoogleId
が発見された場合、結果の配列にid
を追加googleId
のハッシュテーブルを使用してold
配列を確認することができid
またはgoogleId
deは1つのループしか含みません。 'deltaArr [i]'と 'oldArr [i]'を比較します。ここで 'i'は同じ変数です。これにより、両方の配列の同じインデックスで発生する一致のみが検索されます。 – melpomene
http://stackoverflow.com/questions/11922383/access-process-nested-objects-arrays-or-json – Teemu
@melpomene正確には、両方の配列の長さが異なるため、問題です。両方の配列をどのようにループするのですか? Nested forループを使用する必要がありますか?または 'array.find()'? – Satyadev