JavaScript 将对象数组转换为二维数组
JavaScript convert array of objects in array 2D
我需要以下 JS 结构(请求承诺查询的结果)
[ { idfactura: 2,
idcuenta: 1,
nombre: 'Nick',
periodo: 'Per1 ',
formapago: 'Tarj ',
cantidadpersonas: 1,
subtotal: 7000,
porcentajedescuento: 0,
fecha: '24/11/2017 02:38' },
{ idfactura: 3,
idcuenta: 1,
nombre: 'Adm',
periodo: 'Per1 ',
formapago: 'Efec ',
cantidadpersonas: 1,
subtotal: 7000,
porcentajedescuento: 10,
fecha: '25/11/2017 23:45' } ]
精确到以下结构(以 xlsx 格式导出):
[[2, 1, 'Nick', 'Per1', 'Tarj', 1, 7000, 0, '24/11/2017 02:38'],
[3, 1, 'Adm', 'Per1', 'Efec', 1, 7000, 10, '25/11/2017 23:45']]
我已经尝试使用 _
方法、值、JSON.stringify 作为 Whosebug 中的其他帖子,但我无法获得我的确切输出结构。
示例代码:
results = [ { idfactura: 2,
idcuenta: 1,
nombre: 'Nick',
periodo: 'Per1 ',
formapago: 'Tarj ',
cantidadpersonas: 1,
subtotal: 7000,
porcentajedescuento: 0,
fecha: '24/11/2017 02:38' },
{ idfactura: 3,
idcuenta: 1,
nombre: 'Adm',
periodo: 'Per1 ',
formapago: 'Efec ',
cantidadpersonas: 1,
subtotal: 7000,
porcentajedescuento: 10,
fecha: '25/11/2017 23:45' } ]
var arr = Object.key(results).map(function(key){
return [results[key]];
});
按您想要的顺序创建键数组,然后使用 2 次嵌套 Array#map 调用迭代数组,然后迭代键并提取数据:
var oredredKeys = ['idfactura', 'idcuenta', 'nombre', 'periodo', 'formapago', 'cantidadpersonas', 'subtotal', 'porcentajedescuento', 'fecha'];
var data = [{"idfactura":2,"idcuenta":1,"nombre":"Nick","periodo":"Per1","formapago":"Tarj ","cantidadpersonas":1,"subtotal":7000,"porcentajedescuento":0,"fecha":"24/11/2017 02:38"},{"idfactura":3,"idcuenta":1,"nombre":"Adm","periodo":"Per1","formapago":"Efec ","cantidadpersonas":1,"subtotal":7000,"porcentajedescuento":10,"fecha":"25/11/2017 23:45"}];
var result = data.map(function(o) {
return oredredKeys.map(function(key) {
return o[key];
});
});
console.log(result);
您需要从每个对象中获取值。虽然有很多方法,但一种方法是您可以使用 Object.keys
获取键并使用 map
函数分别映射值。
在 ES7
中,您可以使用 Object.values
获取对象的值
此外,由于您的数组似乎有不必要的空格,因此您需要通过修剪空格来相应地映射它们。
results = [ { idfactura: 2,
idcuenta: 1,
nombre: 'Nick',
periodo: 'Per1 ',
formapago: 'Tarj ',
cantidadpersonas: 1,
subtotal: 7000,
porcentajedescuento: 0,
fecha: '24/11/2017 02:38' },
{ idfactura: 3,
idcuenta: 1,
nombre: 'Adm',
periodo: 'Per1 ',
formapago: 'Efec ',
cantidadpersonas: 1,
subtotal: 7000,
porcentajedescuento: 10,
fecha: '25/11/2017 23:45' } ]
const mappedResults =
results.map(result =>
Object.keys(result).map(key =>
typeof(result[key]) === "string" ? result[key].trim() : result[key]
)
)
console.log(mappedResults)
const mappedResultsES7 =
results.map(result =>
Object.values(result).map(value =>
typeof(value) === "string" ? value.trim() : value
)
)
console.log(mappedResultsES7)
我需要以下 JS 结构(请求承诺查询的结果)
[ { idfactura: 2,
idcuenta: 1,
nombre: 'Nick',
periodo: 'Per1 ',
formapago: 'Tarj ',
cantidadpersonas: 1,
subtotal: 7000,
porcentajedescuento: 0,
fecha: '24/11/2017 02:38' },
{ idfactura: 3,
idcuenta: 1,
nombre: 'Adm',
periodo: 'Per1 ',
formapago: 'Efec ',
cantidadpersonas: 1,
subtotal: 7000,
porcentajedescuento: 10,
fecha: '25/11/2017 23:45' } ]
精确到以下结构(以 xlsx 格式导出):
[[2, 1, 'Nick', 'Per1', 'Tarj', 1, 7000, 0, '24/11/2017 02:38'],
[3, 1, 'Adm', 'Per1', 'Efec', 1, 7000, 10, '25/11/2017 23:45']]
我已经尝试使用 _
方法、值、JSON.stringify 作为 Whosebug 中的其他帖子,但我无法获得我的确切输出结构。
示例代码:
results = [ { idfactura: 2,
idcuenta: 1,
nombre: 'Nick',
periodo: 'Per1 ',
formapago: 'Tarj ',
cantidadpersonas: 1,
subtotal: 7000,
porcentajedescuento: 0,
fecha: '24/11/2017 02:38' },
{ idfactura: 3,
idcuenta: 1,
nombre: 'Adm',
periodo: 'Per1 ',
formapago: 'Efec ',
cantidadpersonas: 1,
subtotal: 7000,
porcentajedescuento: 10,
fecha: '25/11/2017 23:45' } ]
var arr = Object.key(results).map(function(key){
return [results[key]];
});
按您想要的顺序创建键数组,然后使用 2 次嵌套 Array#map 调用迭代数组,然后迭代键并提取数据:
var oredredKeys = ['idfactura', 'idcuenta', 'nombre', 'periodo', 'formapago', 'cantidadpersonas', 'subtotal', 'porcentajedescuento', 'fecha'];
var data = [{"idfactura":2,"idcuenta":1,"nombre":"Nick","periodo":"Per1","formapago":"Tarj ","cantidadpersonas":1,"subtotal":7000,"porcentajedescuento":0,"fecha":"24/11/2017 02:38"},{"idfactura":3,"idcuenta":1,"nombre":"Adm","periodo":"Per1","formapago":"Efec ","cantidadpersonas":1,"subtotal":7000,"porcentajedescuento":10,"fecha":"25/11/2017 23:45"}];
var result = data.map(function(o) {
return oredredKeys.map(function(key) {
return o[key];
});
});
console.log(result);
您需要从每个对象中获取值。虽然有很多方法,但一种方法是您可以使用 Object.keys
获取键并使用 map
函数分别映射值。
在 ES7
中,您可以使用 Object.values
此外,由于您的数组似乎有不必要的空格,因此您需要通过修剪空格来相应地映射它们。
results = [ { idfactura: 2,
idcuenta: 1,
nombre: 'Nick',
periodo: 'Per1 ',
formapago: 'Tarj ',
cantidadpersonas: 1,
subtotal: 7000,
porcentajedescuento: 0,
fecha: '24/11/2017 02:38' },
{ idfactura: 3,
idcuenta: 1,
nombre: 'Adm',
periodo: 'Per1 ',
formapago: 'Efec ',
cantidadpersonas: 1,
subtotal: 7000,
porcentajedescuento: 10,
fecha: '25/11/2017 23:45' } ]
const mappedResults =
results.map(result =>
Object.keys(result).map(key =>
typeof(result[key]) === "string" ? result[key].trim() : result[key]
)
)
console.log(mappedResults)
const mappedResultsES7 =
results.map(result =>
Object.values(result).map(value =>
typeof(value) === "string" ? value.trim() : value
)
)
console.log(mappedResultsES7)