Изменить тип для определенных ключей для каждого объекта в массиве json

Canovice спросил: 13 июня 2018 в 11:39 в: javascript

У меня есть следующий массив Javascript, содержащий объекты JSON с 4 ключами (команда, pts, asts, rebs):

[
  {
     team: "A", 
     pts: "24",
     asts: "17",
     rebs: "14"
  },
  {
     team: "B", 
     pts: "24",
     asts: "11",
     rebs: "13"
  },     
  {
     team: "C", 
     pts: "14",
     asts: "27",
     rebs: "24"
  }
];

По какой-то причине данные pts, asts и rebs поступают как строки, тогда как I нужно, чтобы это были числа. Есть ли простой способ указать массив имен ключей ["pts","asts","rebs"] и иметь значения для этих имен ключей, преобразованных из строк в числа?

Борясь с это дольше, чем я хотел бы признать, любая помощь приветствуется!

2 ответа

Есть решение
Leonid Pyrlia ответил: 14 июня 2018 в 08:01

Вы можете просто прокручивать ключи объекта и преобразовывать их в числа, если они имеют числовое значение.

Это можно сделать, создав простую функцию, которая выполняет такое преобразование и передает его в map по входным данным:

const input=[{team:"A",pts:"24",asts:"17",rebs:"14"},{team:"B",pts:"24",asts:"11",rebs:"13"},{team:"C",pts:"14",asts:"27",rebs:"24"}];function convertStringKeysToNum(obj) {    return Object.keys(obj).reduce((all, key) => {
        all[key] = Number(obj[key]) || obj[key];
        return all;
    },{})}const result = input.map(convertStringKeysToNum);console.log(result);
Alan Friedman ответил: 13 июня 2018 в 11:49

Вы можете использовать map и reduce для этого:

const arr = [
  {
     team: "A", 
     pts: "24",
     asts: "17",
     rebs: "14"
  },
  {
     team: "B", 
     pts: "24",
     asts: "11",
     rebs: "13"
  },     
  {
     team: "C", 
     pts: "14",
     asts: "27",
     rebs: "24"
  }
];

const result = arr.map(el => Object.keys(el).reduce((acc, curr) => ({
  ...acc,
  ...curr === 'team' ? {[curr]: el[curr]} : {[curr]: Number(el[curr])},
}), {}));

console.log(result);

Дополнительное видео по вопросу: Изменить тип для определенных ключей для каждого объекта в массиве json

JavaScript - #13 Ассоциативный МАССИВ

jQuery - 009 - Вывод содержимого массива

JavaScript - 11 Массивы одномерные и многомерные