2017-11-03 24 views
0

オブジェクトのデータ配列を格納する方法。私は、同じ所有者名が複数のアドレスを持っている場合、キーと値のペアでlabelDetailsストアのデータがjavascrpitを使用してオブジェクトのデータ配列を格納する方法

Namelist : 
0:"ahmad" 
1:"jhon" 
2: "hamza" 
3: "emma" 

labelDetails : 
ahmad :"lahore" 
jhon :"USA" 
hamza :"UK" 
emma :"USA, Calforina" 

しかし、それは動作しませんしながら、

var namelist = [], labelDetails = {}; 
addedLabels_list.push(name); 
labedDetails_list[ownerName] = Address; 

名前リストは、一意の名前を保持している使用してデータを保存しようとしました。 のはUSA, CaliforniaでのライブEmmaをしましょうと彼女の2番目のアドレスはWashington Dc

あり、それは、あなたが複数のアドレスを格納する配列を使用することができ、この場合のように、emma :"washington dc"

var namelist = [], labelDetails = {}; 
addedLabels_list.push(name); 
labedDetails_list[ownerName] = Address; 
+0

ねえ、あなたが保存するために、いくつかの配列を使用することができます...まだ来て、その後、同様の世話をする必要がありますデータを関連するすべての人のためのルートですemmaのようなものです:["USA、Calforina"、 "washington、dc"]。 – 800i

+0

なぜあなたは単に 'アドレス'を追加しないのですか? 'labedDetails_list [ownerName] + =" - "+ Address;' –

+0

それは明らかですね。キーはユニークなものでなければなりません。 –

答えて

1

、私はお勧めします、あなたのソリューションを動作させるためにいくつかの変更を行う必要があり)キー値の個人レジストリは、各個人が単一のデータ項目を参照するものです。このデータノードは、

var personRegistry = { 
 
    ahmad: { 
 
    addressList: ["Lahore"] 
 
    }, 
 
    jhon: { 
 
    addressList: ["USA"] 
 
    }, 
 
    hamza: { 
 
    addressList: ["UK"] 
 
    }, 
 
    emma: { 
 
    addressList: ["USA, California"] 
 
    } 
 
} 
 

 

 
function storeAddress(name, address) { 
 
    var store = personRegistry[name]; 
 
    if (!store) { 
 
    store = personRegistry[name] = {}; 
 
    store.addressList = []; 
 
    } 
 
    // prevent address duplicates ... 
 
//if (!store.addressList.includes(address)) { // use that if available. 
 
    if (store.addressList.indexOf(address) < 0) { 
 
    store.addressList.push(address); 
 
    } 
 
} 
 

 

 
console.log('personRegistry : ', personRegistry); 
 

 
storeAddress("emma", 'USA, California'); 
 
storeAddress("emma", 'USA, Washington DC'); 
 
storeAddress("emma", 'USA, Washington DC'); 
 

 
storeAddress("susan", 'Canada, Toronto'); 
 
storeAddress("susan", 'Canada, Toronto'); 
 

 
console.log('personRegistry : ', personRegistry);
.as-console-wrapper { max-height: 100%!important; top: 0; }

+0

ありがとうそして、事はあなたがそれを行うための最も効率的な方法を学ぶ方法です非常に感謝します。 – Ahmad

1

が配列の場合、キーは、一意である必要があります置き換えます

function myFunction(){ 
 
\t var namelist = ["ahmad", "jhon", "hamza", "emma"], 
 
\t \t \t labelDetails = {ahmad :["lahore"], jhon :["USA"], hamza :["UK"], emma :["USA, Calforina"]}; 
 
    labelDetails["emma"].push("washington dc"); 
 
    console.log(labelDetails); 
 
}
<button onclick="javascript:myFunction()">Click me</button>

012:同じキーのために、これがスタートです
+0

ありがとう@hamza。 – Ahmad

1

あなたは間違いなく、私が良く、IDベース(したがって、ベース名を選択すると、時間をかけても安定したままデータ構造を設計しようとするだろう

labelDetails = { 
    "ahmad" : ["lahore"], 
    "jhon" : ["USA"], 
    "hamza" : ["UK"], 
    "emma" : ["USA, Calforina"] 
}; 

labelDetails[ownerName].push("washington dc"); 
+0

ありがとう@ Harshakj89 – Ahmad

関連する問題