如何在javascript中获取内部数组

如何在javascript中获取内部数组,javascript,arrays,Javascript,Arrays,我正在尝试从数组中获取所有内容。 这是通过innerHTML提取数据以显示的函数: window.location.href = 'gonative://contacts/getAll?callback=contacts_callback'; function contacts_callback(obj) { var contactinfo = obj.contacts.map(({givenName}) => givenName) + " " +

我正在尝试从数组中获取所有内容。 这是通过
innerHTML
提取数据以显示的函数:

window.location.href = 'gonative://contacts/getAll?callback=contacts_callback';

function contacts_callback(obj) {
    var contactinfo = obj.contacts.map(({givenName}) => givenName) + " " + 
                      obj.contacts.map(({familyName}) => familyName) + " " + " (" + 
                      obj.contacts.map(({organizationName}) => organizationName) + ") " + 
                      obj.contacts.map(({phoneNumbers.phoneNumber}) => phoneNumbers.phoneNumber) + "<br>";
    document.getElementById("demo").innerHTML = contactinfo;
}
我只想将结果列为:

John Appleseed(苹果)XXX-XXXXXXX
约翰苹果色(苹果)XXX-XXXXXXX


很难给出答案,因为很难判断您的
电话号码
数组中可以包含哪些内容,以及您是否还会为该数组中的每个电话号码显示一行

我会这样做:

function contacts_callback(obj) {
  let arrayContacts = [];

  // Iterate over all your contacts
  obj.contacts.forEach(item => {
    // Iterate over each contact's phone numbers
    item.phoneNumbers.forEach(phone => {
      // Building your string with string interpolation and pushing to result array
      // You could also add <br> or other tags needed here
      arrayContacts.push(`${item.givenName} ${item.familyName} (${item.organizationName}) ${phone.phoneNumber}`);
    });    
  });
  // Return your array, use it in your innerHTNL, etc.
  return arrayContacts;
} 

function contacts\u回调(obj){
让arrayContacts=[];
//迭代所有联系人
obj.contacts.forEach(项目=>{
//反复查看每个联系人的电话号码
item.PhoneNumber.forEach(电话=>{
//使用字符串插值构建字符串并推送到结果数组
//您还可以在此处添加所需的
或其他标记 arrayContacts.push(`${item.givenName}${item.familyName}(${item.organizationName})${phone.phoneNumber}`); }); }); //返回数组,在innerHTNL中使用它,等等。 返回arrayContacts; }
如果您的obj被称为“obj”,则:

此代码将返回您询问的一系列信息,但如果用户有一个以上的电话号码,则只会从列表中选择第一个

两个问题:

  • 您将显示所有给定的名称,然后显示所有的姓氏等,每个都有一个单独的
    .map()
    调用。相反,只对数组执行一个
    .map()
    调用,然后显示每个迭代对象的属性

  • phoneNumber。phoneNumber
    不是正确的引用
    phoneNumbers
    是一个数组,因此应该迭代它
此外:

  • 模板文本可能使构建字符串更容易一些
  • 您可以使用
    .join(
    ”)
    将行与换行符粘合在一起
以下是更正的版本:

function contacts\u回调(obj){
var contactinfo=obj.contacts.map(o=>
`${o.givenName}${o.familyName}(${o.organizationName})${
o、 phoneNumber.map(n=>n.phoneNumber)
}`)
.加入(“
”); document.getElementById(“demo”).innerHTML=contactinfo; } //演示 var obj={“success”:true,“contacts”:[{“emailaddress”:[],“phoneNumber”:[{“label”:“unknown”,“phoneNumber”:“XXX-XXXXXXX”}],“givenName”:“John”,“organizationName”:“Apple”,“familyName”:“Appleseed”,{“emailaddress”:[],“phoneNumber”:[{“label”:“unknown”,“phoneNumber”:“XXX-XXXXXXX”}],“givenName”:“John”,“organizationName”:“Apple”,“familyName”:“Apple”,“familyName”:“苹果色”,},]}; 联系人(obj);

电话号码是一个数组。一个人在该数组中可以有多个电话号码吗?然后会发生什么?
function contacts_callback(obj) {
  let arrayContacts = [];

  // Iterate over all your contacts
  obj.contacts.forEach(item => {
    // Iterate over each contact's phone numbers
    item.phoneNumbers.forEach(phone => {
      // Building your string with string interpolation and pushing to result array
      // You could also add <br> or other tags needed here
      arrayContacts.push(`${item.givenName} ${item.familyName} (${item.organizationName}) ${phone.phoneNumber}`);
    });    
  });
  // Return your array, use it in your innerHTNL, etc.
  return arrayContacts;
} 

const result = obj.contacts.map(contact =>{
    return `${contact.givenName} ${contact.familyName} (${contact.organizationName}) ${contact.phoneNumbers[0].phoneNumber}`
}