[英]How to store arrays of data in object using JavaScript
如何在对象中存储数据数组。 我试图使用存储数据
var namelist = [], labelDetails = {};
addedLabels_list.push(name);
labedDetails_list[ownerName] = Address;
名称列表保留唯一的名称,而labelDetails将数据存储在键值对中
Namelist :
0:"ahmad"
1:"jhon"
2: "hamza"
3: "emma"
labelDetails :
ahmad :"lahore"
jhon :"USA"
hamza :"UK"
emma :"USA, Calforina"
但是,当同一所有者名称具有多个地址时 ,它将不起作用。 假设Emma
住在USA, California
,她的第二个地址是Washington Dc
并替换了emma :"washington dc"
var namelist = [], labelDetails = {};
addedLabels_list.push(name);
labedDetails_list[ownerName] = Address;
对于数组,密钥应该是唯一的,因此在这种情况下,您可以使用数组为同一密钥存储多个地址,这是一个开始:
function myFunction(){ var namelist = ["ahmad", "jhon", "hamza", "emma"], 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>
我建议您一定要进行一些更改才能使解决方案正常工作,
labelDetails = {
"ahmad" : ["lahore"],
"jhon" : ["USA"],
"hamza" : ["UK"],
"emma" : ["USA, Calforina"]
};
labelDetails[ownerName].push("washington dc");
我将尝试设计一个数据结构,该结构也将随着时间的推移保持稳定,因此选择一个基于名称(基于更好ID)的键值人员注册表,每个人都引用一个数据项。 然后,该数据节点是所有将要出现的与人相关的数据的根,因此也必须加以注意...
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; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.