Как я могу отформатировать все телефонные номера в массиве json, прежде чем возвращать его

#javascript #node.js

#javascript #node.js

Вопрос:

у меня есть данные json, которые я получаю из API, который содержит телефонные номера в массиве объектов. Что мне нужно сделать, так это отформатировать эти nbr.

вот пример данных, которые я получаю от api, который я вызываю и которые я хочу преобразовать.

 [
    {
         "Name": "Tom Miller",
         "emails": [
             {"primary": "email1@test.com"},
             {"secondary": "email2@test.com"}
        ],
         "phones": [
             {"fax": 2015551212},
             {"home": 2134441212},
             {"mobile": 3105551212},
             {"work": 3605551212}
        ]
    },
    {
         "Name": "Bud Light",
         "emails": [
             {"primary": "email1@test.com"},
             {"secondary": "email2@test.com"}
        ],
         "phones": [
             {"fax": 2015551212},
             {"home": 2134441212},
             {"mobile": 3105551212},
             {"work": 3605551212}
        ]
    }
]
  

я хочу иметь возможность указывать nbr каждого телефона в массиве phones и вызывать функцию для форматирования nbr, а затем заменять nbr на вновь отформатированный nbr, прежде чем возвращать его в свое приложение.

функция, которую я вызываю для форматирования nbrs, выглядит следующим образом

 function formatPhoneNumber(phoneNumberString) {
  var cleaned = (''   phoneNumberString).replace(/D/g, '')
  var match = cleaned.match(/^(d{3})(d{3})(d{4})$/)
  if (match) {
    return '('   match[1]   ') '   match[2]   '-'   match[3]
  }
  return phoneNumberString
} 
  

как я могу это сделать?

вот что я пытаюсь вернуть на основе моей функции

 [

        {
             "Name": "Tom Miller",
             "emails": [
                 {"primary": "email1@test.com"},
                 {"secondary": "email2@test.com"}
            ],
             "phones": [
                 {"fax": "(201) 555-1212"},
                 {"home": "(213) 444-1212"},
                 {"mobile": "(310) 555-1212"},
                 {"work": "(360) 555-1212"}
            ]
        },
        {
             "Name": "Bud Light",
             "emails": [
                 {"primary": "email1@test.com"},
                 {"secondary": "email2@test.com"}
            ],
             "phones": [
                 {"fax": "(201) 555-1212"},
                 {"home": "(213) 444-1212"},
                 {"mobile": "(310) 555-1212"},
                 {"work": "(360) 555-1212"}
            ]
        }
    ]
  

Комментарии:

1. Пожалуйста, добавьте свой ожидаемый результат

Ответ №1:

 var defaultArray = [
    {
         "Name": "Tom Miller",
         "emails": [
             {"primary": "email1@test.com"},
             {"secondary": "email2@test.com"}
        ],
         "phones": [
             {"fax": 2015551212},
             {"home": 2134441212},
             {"mobile": 3105551212},
             {"work": 3605551212}
        ]
    },
    {
         "Name": "Bud Light",
         "emails": [
             {"primary": "email1@test.com"},
             {"secondary": "email2@test.com"}
        ],
         "phones": [
             {"fax": 2015551212},
             {"home": 2134441212},
             {"mobile": 3105551212},
             {"work": 3605551212}
        ]
    }
]

function formatPhoneNumber(phoneNumberString) {
  var cleaned = (''   phoneNumberString).replace(/D/g, '')
  var match = cleaned.match(/^(d{3})(d{3})(d{4})$/)
  if (match) {
    return '('   match[1]   ') '   match[2]   '-'   match[3]
  }
  return phoneNumberString
} 

for(let item of defaultArray){
for(let phoneItems in item.phones){
let currentVal = Object.keys(item.phones[phoneItems])[0];
item.phones[phoneItems] = formatPhoneNumber(item.phones[phoneItems][currentVal])
}
}

console.log(defaultArray)  

Пожалуйста, используйте приведенный ниже код. Дайте мне знать, что это ожидаемый результат.

 var defaultArray = [
{
     "Name": "Tom Miller",
     "emails": [
         {"primary": "email1@test.com"},
         {"secondary": "email2@test.com"}
    ],
     "phones": [
         {"fax": 2015551212},
         {"home": 2134441212},
         {"mobile": 3105551212},
         {"work": 3605551212}
    ]
},
{
     "Name": "Bud Light",
     "emails": [
         {"primary": "email1@test.com"},
         {"secondary": "email2@test.com"}
    ],
     "phones": [
         {"fax": 2015551212},
         {"home": 2134441212},
         {"mobile": 3105551212},
         {"work": 3605551212}
    ]
}
]

    function formatPhoneNumber(phoneNumberString) {
  var cleaned = (''   phoneNumberString).replace(/D/g, '')
  var match = cleaned.match(/^(d{3})(d{3})(d{4})$/)
  if (match) {
    return '('   match[1]   ') '   match[2]   '-'   match[3]
  }
  return phoneNumberString
}



for(let item of defaultArray){
    for(let phoneItems in item.phones){
       let currentVal = Object.keys(item.phones[phoneItems])[0];
           item.phones[phoneItems] = formatPhoneNumber(item.phones[phoneItems][currentVal])
    }
}