Вы также можете сделать это довольно простым способом с ES6 и без всяких проблем с Array.reduce :
let data = [{ "userId": 1, "id": 1, "title": "delectus aut", "completed": false }, { "userId": 1, "id": 2, "title": "quis ut", "completed": false } ]
let result = data.reduce((acc,cur) =>
acc.push(Object.values(cur)) && acc, [Object.keys(data[0])])
console.log(result)
Если вы установили в качестве начального значения аккумулятора массив Object.keys , то все, что вам нужно, это нажать на этот аккумулятор Object.values каждой итерации в массиве.Если ваш заголовок не всегда находится в первой строке, просто укажите его как массив значений и т. Д.
let data = [{ "userId": 1, "id": 1, "title": "delectus aut", "completed": false }, { "userId": 1, "id": 2, "title": "quis ut", "completed": false } ]
let hdr = ["userId", "id", "title", "completed"]
let result = data.reduce((acc,cur) => acc.push(Object.values(cur)) && acc, [hdr])
console.log(result)