Конвертировать массив объектов json в другой формат - PullRequest
0 голосов
/ 07 марта 2019

Как преобразовать следующие примеры данных ответа в желаемый формат JSON, указанный ниже?Спасибо.

Моя логика

arr = arr.map((e) => { e.title = JSON.parse(e.title.replace(/'/g, '"')).title; return e; })

Мои текущие данные ответа

arr = ["{'department': 'YOWI', 'timelimit': '01:05:02', 'sub_title': 'PRE-EMPLOYMENT ASSESSMENT  TEST PART 8', 'id': 185, 'random_code': '50-76997961114', 'title': 'Hey', 'instruction': '?', 'created_at': '2019-03-06'}",
     "{'department': 'Department Exam 2', 'timelimit': '01:05:08', 'sub_title': 'Just a test exam 2', 'id': 142, 'random_code': '50-3910111611011', 'title': 'Assessment', 'instruction': 'Hey Jude', 'created_at': '2019-02-27'}"]

Желаемый формат JSON

arr = [
        {
            id: 0,
            title: "{'department': 'YOWI', 'timelimit': '01:05:02', 'sub_title': 'PRE-EMPLOYMENT ASSESSMENT  TEST PART 8', 'id': 185, 'random_code': '50-76997961114', 'title': 'YAHSHUA', 'instruction': '?', 'created_at': '2019-03-06'}",
        },
        {
            id: 1,
            title: "{'department': 'Department Exam 2', 'timelimit': '01:05:08', 'sub_title': 'Just a test exam 2', 'id': 142, 'random_code': '50-3910111611011', 'title': 'Exam2', 'instruction': 'Hey Jude', 'created_at': '2019-02-27'}"
        }
    ]

Ответы [ 9 ]

6 голосов
/ 07 марта 2019

Гм, просто

 arr.map((title, id) => ({ title, id }))
3 голосов
/ 07 марта 2019

Вы можете использовать map() для возврата желаемого результата:

const arr = ["{'department': 'YOWI', 'timelimit': '01:05:02', 'sub_title': 'PRE-EMPLOYMENT ASSESSMENT  TEST PART 8', 'id': 185, 'random_code': '50-76997961114', 'title': 'Hey', 'instruction': '?', 'created_at': '2019-03-06'}",
     "{'department': 'Department Exam 2', 'timelimit': '01:05:08', 'sub_title': 'Just a test exam 2', 'id': 142, 'random_code': '50-3910111611011', 'title': 'Assessment', 'instruction': 'Hey Jude', 'created_at': '2019-02-27'}"];
     
const result = arr.map((item, index) => ({
  id: index,
  title: item
}));

console.log(result);

Таким образом, вы возвращаете массив объектов, которые имеют свойство title типа string.Если вы хотите вывести значение title как объект, вы можете проанализировать значение с помощью JSON.parse():

const result = arr.map((item, index) => ({
  id: index,
  title: JSON.parse(item)
}));
2 голосов
/ 07 марта 2019

Попробуйте код ниже,

Потому что, если вы используете forEach или что-то еще, это повлияет на производительность вашего кода.

Я рекомендую этот способ, если вы хотите обрабатывать большие данные.Если у вас меньше данных, используйте другие ответы выше для получения результата с меньшим количеством кода.

Для справки Эффективность Javascript: 'for' vs 'forEach' .

var arr = ["{'department': 'YOWI', 'timelimit': '01:05:02', 'sub_title': 'PRE-EMPLOYMENT ASSESSMENT  TEST PART 8', 'id': 185, 'random_code': '50-76997961114', 'title': 'Hey', 'instruction': '?', 'created_at': '2019-03-06'}",
  "{'department': 'Department Exam 2', 'timelimit': '01:05:08', 'sub_title': 'Just a test exam 2', 'id': 142, 'random_code': '50-3910111611011', 'title': 'Assessment', 'instruction': 'Hey Jude', 'created_at': '2019-02-27'}"
];

var result = [];

for(let i=0;i<arr.length;i++){
  result.push({id: i, title:arr[i]}); 
}

console.log(result);

Для отчета об анализе цикла: https://github.com/dg92/Performance-Analysis-JS

2 голосов
/ 07 марта 2019

Используя цикл forEach, создайте объект с необходимыми свойствами и замените исходный объект в массиве

var arr = ["{'department': 'YOWI', 'timelimit': '01:05:02', 'sub_title': 'PRE-EMPLOYMENT ASSESSMENT  TEST PART 8', 'id': 185, 'random_code': '50-76997961114', 'title': 'Hey', 'instruction': '?', 'created_at': '2019-03-06'}",
  "{'department': 'Department Exam 2', 'timelimit': '01:05:08', 'sub_title': 'Just a test exam 2', 'id': 142, 'random_code': '50-3910111611011', 'title': 'Assessment', 'instruction': 'Hey Jude', 'created_at': '2019-02-27'}"
]
arr.forEach((e, i) => {
  arr[i] = {id:i,title:e};
})
console.log(arr)
2 голосов
/ 07 марта 2019

Это не сложно, вы должны отобразить массив, как вы делали, и вернуть новый объект:

arr = ["{'department': 'YOWI', 'timelimit': '01:05:02', 'sub_title': 'PRE-EMPLOYMENT ASSESSMENT  TEST PART 8', 'id': 185, 'random_code': '50-76997961114', 'title': 'Hey', 'instruction': '?', 'created_at': '2019-03-06'}",
     "{'department': 'Department Exam 2', 'timelimit': '01:05:08', 'sub_title': 'Just a test exam 2', 'id': 142, 'random_code': '50-3910111611011', 'title': 'Assessment', 'instruction': 'Hey Jude', 'created_at': '2019-02-27'}"]

mapped = arr.map((elem, index) => {
  return ({
    id: index,
    title: elem    
  });
});

console.log(mapped);
1 голос
/ 07 марта 2019
 var arr = ["{'department': 'YOWI', 'timelimit': '01:05:02', 'sub_title': 'PRE-EMPLOYMENT ASSESSMENT  TEST PART 8', 'id': 185, 'random_code': '50-76997961114', 'title': 'Hey', 'instruction': '?', 'created_at': '2019-03-06'}",
        "{'department': 'Department Exam 2', 'timelimit': '01:05:08', 'sub_title': 'Just a test exam 2', 'id': 142, 'random_code': '50-3910111611011', 'title': 'Assessment', 'instruction': 'Hey Jude', 'created_at': '2019-02-27'}"];

    var new_arr = [];

    for(var i=0; i< arr.length; i++){
        new_arr[i] = {'id':i, 'title':arr[i]}
    }

    console.log(JSON.stringify(new_arr));
1 голос
/ 07 марта 2019
 arr = ["{'department': 'YOWI', 'timelimit': '01:05:02', 'sub_title': 'PRE-EMPLOYMENT ASSESSMENT  TEST PART 8', 'id': 185, 'random_code': '50-76997961114', 'title': 'Hey', 'instruction': '?', 'created_at': '2019-03-06'}",
 "{'department': 'Department Exam 2', 'timelimit': '01:05:08', 'sub_title': 'Just a test exam 2', 'id': 142, 'random_code': '50-3910111611011', 'title': 'Assessment', 'instruction': 'Hey Jude', 'created_at': '2019-02-27'}"]

 for (var k = 0; k < arr.length; k++){
  arr[k] = {'id':k, 'title': arr[k] };
 }
 console.log(arr);
1 голос
/ 07 марта 2019

использовать currElement, индексировать в качестве параметра карты и затем возвращать новый объект {"id":index,"title":currElement}

let arr = ["{'department': 'YOWI', 'timelimit': '01:05:02', 'sub_title': 'PRE-EMPLOYMENT ASSESSMENT  TEST PART 8', 'id': 185, 'random_code': '50-76997961114', 'title': 'Hey', 'instruction': '?', 'created_at': '2019-03-06'}",
     "{'department': 'Department Exam 2', 'timelimit': '01:05:08', 'sub_title': 'Just a test exam 2', 'id': 142, 'random_code': '50-3910111611011', 'title': 'Assessment', 'instruction': 'Hey Jude', 'created_at': '2019-02-27'}"];
     
let newArr =arr.map((currElement, index) => {
  return {"id":index,"title":currElement};
});

console.log(newArr);
1 голос
/ 07 марта 2019

Вы можете использовать .map, где индексом является id:

const arr = ["{'department': 'YOWI', 'timelimit': '01:05:02', 'sub_title': 'PRE-EMPLOYMENT ASSESSMENT  TEST PART 8', 'id': 185, 'random_code': '50-76997961114', 'title': 'Hey', 'instruction': '?', 'created_at': '2019-03-06'}", "{'department': 'Department Exam 2', 'timelimit': '01:05:08', 'sub_title': 'Just a test exam 2', 'id': 142, 'random_code': '50-3910111611011', 'title': 'Assessment', 'instruction': 'Hey Jude', 'created_at': '2019-02-27'}"],

res = arr.map((title, id) => ({id, title}));
console.log(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...