#javascript #arrays #string
#javascript #массивы #строка
Вопрос:
Уважаемые разработчики Javascript, как мне изменить значение свойства с Int / Double на String для всех объектов в массиве?
Original Array
data = [
Object {
"id": 2138,
"name": "Steve",
"email": "steve.adams@gmail.com",
"phone": 8745235698,
"addressLine1": "Some Nice Address",
"shopId": 115,
},
Object {
"id": 2139,
"name": "Chris",
"email": "chris.austins@gmail.com",
"phone": 9865345689,
"addressLine1": "Vhjhjg",
"shopId": 115,
},
Object {
"id": 2140,
"name": "Melinda",
"email": "melinda@velvetjewels.com",
"phone": 9867626833,
"addressLine1": "California",
"shopId": 115,
}
]
У меня есть библиотека Multipicker, для которой id
свойство должно быть строковым значением, когда я передаю ему массив. Когда идентификатор не является строкой, я не вижу никаких данных в библиотеке для выбора.
Я пытался использовать map()
функцию, но не смог сохранить объект. Я получил только массив идентификаторов строк.
//Tried Map Method
let customers = data.map((item) => (item.id = String(item.id)));
console.log("fixed array", customers);
result ["2138","2139","2140"]
Я также хочу сохранить исходный массив, поэтому, если возможно, пожалуйста, предоставьте решение с использованием map()
функции, поскольку она возвращает новый массив без изменения исходного. Или любой другой метод, который не изменяет исходный массив
//Expected Result
//id's changed to String
customers = [
Object {
"id": "2138",
"name": "Steve",
"email": "steve.adams@gmail.com",
"phone": 8745235698,
"addressLine1": "Some Nice Address",
"shopId": 115,
},
Object {
"id": "2139",
"name": "Chris",
"email": "chris.austins@gmail.com",
"phone": 9865345689,
"addressLine1": "Vhjhjg",
"shopId": 115,
},
Object {
"id": "2140",
"name": "Melinda",
"email": "melinda@velvetjewels.com",
"phone": 9867626833,
"addressLine1": "California",
"shopId": 115,
}
]
Комментарии:
1. Просто перебирайте исходный массив и устанавливайте
thing.id = thing.id.toString()
. Вам не нужно сопоставлять, если вы хотите изменить оригинал. Просто выполните цикл.2.
data.forEach(it => it.id = it.id.toString())
Ответ №1:
Если вы используете карту, вы должны вернуть измененный объект :
let customers = data.map( item => {
item.id = String(item.id);
return item;
});
Но вам не нужна карта. Вы можете просто выполнить итерацию таким образом :
data.forEach(item => item.id = String(item.id)) // or "" item.id, or item.id.toString()