#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])
}
}