Преобразование массива строк в пару значений ключа - PullRequest
1 голос
/ 02 мая 2019

У меня есть строка из внутреннего источника в формате:

числа: "1123763449056714753, 1123764853364097024, 1123770213739241473 ..."

Я хочу преобразовать ее в пару ключ-значение в некоторой форметак что я могу сопоставить эти идентификаторы для моего отдельного элемента div:

["numbers": [ 
              {"id":1123763449056714753 }, 
              {"id":1123764853364097024 },
              {"id":1123770213739241473 },
             ....
            ]
]

или

[                 {"id":1123763449056714753 }, 
                  {"id":1123764853364097024 },
                  {"id":1123770213739241473 },
                 ....

    ]

Я попытался использовать forEach () / map (), но получил ошибку как неопределенную.Также я не уверен, является ли это набор строк или массив строк Пожалуйста, помогите

Ответы [ 6 ]

2 голосов
/ 02 мая 2019

Вы можете разбить строку и отобразить объекты, сохранив строки (которые больше, чем допустимые целочисленные значения).

var object = { numbers: "1123763449056714753,1123764853364097024,1123770213739241473,1123771975162368003" },
    numbers = object.numbers.split(',').map(id => ({ id }));

console.log(numbers);
.as-console-wrapper { max-height: 100% !important; top: 0; }
1 голос
/ 02 мая 2019

Вы можете split объект, затем map его и вернуть нужную структуру:

const obj = {
  "numbers": "1123763449056714753,1123764853364097024,1123770213739241473,1123771975162368003..."
}


const res = {
  numbers: [
    obj.numbers.split(",").map(el => ({
      id: el
    }))
  ]
}

console.log(res);
1 голос
/ 02 мая 2019

Вы можете сделать что-то вроде этого.

var data = {"numbers":"1123763449056714753,1123764853364097024,1123770213739241473,1123771975162368003"};

data.numbers = data.numbers.split(',').reduce((res, id) => [...res, {id}], []);
1 голос
/ 02 мая 2019

var arr = ["1123763449056714753","1123764853364097024","1123770213739241473","1123771975162368003"];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
    var obj = {};
    obj.id = arr[i];
    newArr.push(obj);
}
console.log(newArr)
1 голос
/ 02 мая 2019

Одна вещь, которую вы можете сделать, это получить числа в виде массива:

var obj = {
  "numbers": "1123763449056714753,1123764853364097024,1123770213739241473,1123771975162368003"
};

var result = obj.numbers.split(',').reduce((acc, num) => {
  acc.push({ id: num });
  return acc;
}, []);

console.log(result)

или, как упоминалось @briosheje, вы также можете использовать map:

var result = obj.numbers.split(',').map(num => ({id: num}));

Результат будет выглядеть так:

[{"id":"1123763449056714753"},{"id":"1123764853364097024"},{"id":"1123770213739241473"},{"id":"1123771975162368003"}]
0 голосов
/ 02 мая 2019

В соответствии с вашими данными, вы можете просто разделить строку чисел, используя "," и пройти по ней, чтобы выполнить преобразование, как

var data = {"numbers":"1123763449056714753,1123764853364097024,1123770213739241473,1123771975162368003"};
var numbers_arr = data.numbers.split(",");
var result = {
  "numbers":[]
};
for(var i=0;i<numbers_arr.length;i++){
 var tempObj = {
    "id":parseInt(numbers_arr[i])
  };
  result.numbers.push(tempObj)
}

console.log(JSON.stringify(result));
...