Преобразование строки в целое число внутри массива в javascript

У меня есть массив, который показан из console.info (temp) вот так:

temp = [{name: "Request A", data: "1"}
       {name: "Request B", data: "12"}
       {name: "Request C", data: "6"}]

Как это сделать, если я хочу изменить формат моего массива, станет таким:

 temp: [{name: "Request A", data: [1]}
       {name: "Request B", data: [12]}
       {name: "Request C", data: [6]}]

Пожалуйста, помогите ребята ... спасибо,

Это JavaScript или PHP? Удалите ненужные теги. Если вопрос касается «генерации JavaScript в результирующем выводе страницы PHP», это все еще PHP.

user2864740 15.01.2019 05:54

Если вы хотите изменить этот массив, то есть не создавать новый, используйте forEach: jsfiddle.net/awj0sq31

Gerardo Furtado 15.01.2019 05:56

user2864740 это использование JavaScript man

aldi 15.01.2019 05:57
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
1 042
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

Используйте функцию map, которая вернет новый массив, и parseInt, чтобы преобразовать строку в число

let temp = [{
    name: "Request A",
    data: "1"
  },
  {
    name: "Request B",
    data: "12"
  },
  {
    name: "Request C",
    data: "6"
  }
]
let newTemp = temp.map((item) => {
  return {

    name: item.name,
    data: [parseInt(item.data, 10)]
  }


});
console.info(newTemp)

Я думаю, вы можете использовать здесь оператор распространения .... вернуть {... элемент, данные: [+ item.data]}

Code Maniac 15.01.2019 06:06

@CodeManiac абсолютно да

brk 15.01.2019 06:07

Чтобы изменить массив на месте, вы можете перебрать элементы для forEach и просто изменить свойство:

let temp = [ {name: "Request A", data: "1"},
             {name: "Request B", data: "12"},
             {name: "Request C", data: "6"}]

temp.forEach(item => item.data = [+(item.data)])
console.info(temp)

Может быть, вы сможете улучшить с [+(item.data)], прочитав: унарный плюс - это самый быстрый и предпочтительный способ преобразования чего-либо в число, потому что он не выполняет никаких других операций с числом от здесь

Shidersz 15.01.2019 06:08

Хотя это работает и дает результат, функциональное программирование с использованием forEach не предназначено для изменения исходного массива, а вместо этого вызывает побочные эффекты. map является предпочтительной функцией, поскольку она возвращает новый объект, оставляя исходный нетронутым.

Drew Reese 15.01.2019 06:21

@DrewReese, это хорошо, но вопрос конкретно спрашивает, как «изменить формат моего массива, чтобы он стал таким». Для меня это звучит как мутация.

Mark 15.01.2019 06:22

Вы можете сделать это с помощью map

let temp =  [{name: "Request A", data: "1"},{name: "Request B", data: "12"},{name: "Request C", data: "6"}]

let op = temp.map(e=> {
  return {
    ...e,
    data : [+e.data]
  }
})

console.info(op)

Зачем вам использовать mapи для замены массива на месте ??

Mark 15.01.2019 05:58

Попробуй это,

temp = [{name: "Request A", data: "1"},
       {name: "Request B", data: "12"},
       {name: "Request C", data: "6"}];


  let temp1 = temp.map(item => {
    item.data = [parseInt(item.data)]
    return item;
  })

  console.info(temp1);

ВЫВОД:

[ { "name": "Request A", "data": [ 1 ] }, { "name": "Request B", "data": [ 12 ] }, { "name": "Request C", "data": [ 6 ] } ]

Пытаться

temp.forEach(x=> x.data=[+x.data]);

let temp = [{name: "Request A", data: "1"},
       {name: "Request B", data: "12"},
       {name: "Request C", data: "6"}];
       
       
temp.forEach(x=> x.data=[+x.data]);

console.info(JSON.stringify(temp));

Попробуй это - Я использую Array.of для создания массива. + оператор для синтаксического анализа строки в массив.

temp.map(t => (t.data = Array.of(+t.data), t));

Вот один из способов сделать это. Это из узла REPL.

> var temp = [{name: "Request A", data: "1"}, {name: "Request B", data: "12"}, {name: "Request C", data: "6"}];
undefined
> temp.forEach(function(e) {
..... e.data = [parseInt(e.data, 10)];
..... });
undefined
> temp
[ { name: 'Request A', data: [ 1 ] },
  { name: 'Request B', data: [ 12 ] },
  { name: 'Request C', data: [ 6 ] } ]
>

Другие вопросы по теме