我有一个要求,我需要根据JSON对象的映射填充数组。 例如: 假设我有JSON对象,如下所示:
let columns = { 'name' :'value', 'id' : 1, 'age': 15}
我想创建一个具有如下所示值的数组:
var values = [1, 15, value]; // id, age, name
我能够创建数组数组,如下所示:
var data = new Array();
var output = new Array();
let columns = [
{ 'name' :'value', 'id' : 1, 'age': 15},
{ 'name' :'value1', 'id' : 2, 'age': 18}
];
for(let i=0;i< columns.length; i++) {
for (let variable in columns[i]) {
data.push(columns[i][variable]);
}
output.push(data);
data = new Array();
}
console.log(output);
我正在努力按照我需要的顺序将值推送到数组。我尝试创建一个映射对象但到目前为止没有成功。请让我知道可能的解决方案。
修改
感谢您的解决方案,我可以用任何方式在变量中定义map函数参数和json对象。并替换它。如下所示:
let mapping {
columns : '{name, id, age}',
mapping : '[id, age, name]'
}
const result = columns.map((mapping.columns) => mapping.mapping);
答案 0 :(得分:5)
您可以使用map()
方法和ES6参数解构,并按照您的需要为数组添加属性。
let columns = [{ 'name' :'value', 'id' : 1, 'age': 15},{ 'name' :'value1', 'id' : 2, 'age': 18}];
const result = columns.map(({name, id, age}) => [id, age, name]);
console.log(result)
答案 1 :(得分:1)
您还可以删除内部for循环并使用列名称(或JSON字段名称)读取数据,因此它如下所示。
var data = new Array();
var output = new Array();
let columns = [
{ 'name' :'value', 'id' : 1, 'age': 15},
{ 'name' :'value1', 'id' : 2, 'age': 18}
];
for(let i=0;i< columns.length; i++) {
data.push(columns[i]['id']);
data.push(columns[i]['age']);
data.push(columns[i]['name']);
output.push(data);
data = new Array();
}
console.log(output);
答案 2 :(得分:0)
您可以使用Object.values()
获取object
var output = new Array();
let columns = [
{ 'name' :'value', 'id' : 1, 'age': 15},
{ 'name' :'value1', 'id' : 2, 'age': 18}
];
output = columns.map(item => Object.values(item))
console.log(output);