javascript 对象从键数组转换为对象数组 groupby key
javascript object transform from array of key to array of object groupby key
这是原文
{
name: [ 'foo', 'bar' ],
email: [ 'foo@mail.com', 'bar@mail.com' ],
comment: [ 'message', 'bmessage' ]
}
是否有任何方法可以通过 lodash/ _ / vanilla 转换为两个对象的数组
[
{
name:"foo",
email:"foo@mail.com",
content:"message"
},
...
]
您可以这样做,假设当前索引对应于每个属性中的正确值。
var obj = {
name: [ 'foo', 'bar' ],
email: [ 'foo@mail.com', 'bar@mail.com' ],
comment: [ 'message', 'bmessage' ]
};
var arr = [];
for (var i = 0; i < obj.name.length; i++) {
arr.push({
name: obj.name[i],
email: obj.email[i],
comment: obj.comment[i]
});
}
console.log(arr);
输出:
[ { name: 'foo', email: 'foo@mail.com', comment: 'message' },
{ name: 'bar', email: 'bar@mail.com', comment: 'bmessage' } ]
这可能有点容易出错,如果索引与正确的值不匹配,或者如果每个 属性.
中的值数量不同
你可以运行这个代码.....
var array = []; // declare a new array
for(var i = 0 ;i <a.name.length;i++){
var obj = {}; // declare new objcet
obj.name = a.name[i];
obj.email = a.email[i];
obj.comment = a.comment[i];
array.push(obj); // push object into array
}
console.log(array);
我建议遍历键,然后遍历属性的内容。
var obj = {
name: ['foo', 'bar'],
email: ['foo@mail.com', 'bar@mail.com'],
comment: ['message', 'bmessage']
},
array = [];
Object.keys(obj).forEach(function (k) {
obj[k].forEach(function (a, i) {
array[i] = array[i] || {};
array[i][k] = a;
});
});
document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');
下面是一个使用下划线的解决方案:
var keys = _.keys(data);
// create an array of all the values for each object
var valuesList = _.zip.apply(null, _.values(data));
// map across each value list to create the object
var result = _.map(valuesList, function(values){
return _.object(keys, values)
});
这是原文
{
name: [ 'foo', 'bar' ],
email: [ 'foo@mail.com', 'bar@mail.com' ],
comment: [ 'message', 'bmessage' ]
}
是否有任何方法可以通过 lodash/ _ / vanilla 转换为两个对象的数组
[
{
name:"foo",
email:"foo@mail.com",
content:"message"
},
...
]
您可以这样做,假设当前索引对应于每个属性中的正确值。
var obj = {
name: [ 'foo', 'bar' ],
email: [ 'foo@mail.com', 'bar@mail.com' ],
comment: [ 'message', 'bmessage' ]
};
var arr = [];
for (var i = 0; i < obj.name.length; i++) {
arr.push({
name: obj.name[i],
email: obj.email[i],
comment: obj.comment[i]
});
}
console.log(arr);
输出:
[ { name: 'foo', email: 'foo@mail.com', comment: 'message' },
{ name: 'bar', email: 'bar@mail.com', comment: 'bmessage' } ]
这可能有点容易出错,如果索引与正确的值不匹配,或者如果每个 属性.
中的值数量不同你可以运行这个代码.....
var array = []; // declare a new array
for(var i = 0 ;i <a.name.length;i++){
var obj = {}; // declare new objcet
obj.name = a.name[i];
obj.email = a.email[i];
obj.comment = a.comment[i];
array.push(obj); // push object into array
}
console.log(array);
我建议遍历键,然后遍历属性的内容。
var obj = {
name: ['foo', 'bar'],
email: ['foo@mail.com', 'bar@mail.com'],
comment: ['message', 'bmessage']
},
array = [];
Object.keys(obj).forEach(function (k) {
obj[k].forEach(function (a, i) {
array[i] = array[i] || {};
array[i][k] = a;
});
});
document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');
下面是一个使用下划线的解决方案:
var keys = _.keys(data);
// create an array of all the values for each object
var valuesList = _.zip.apply(null, _.values(data));
// map across each value list to create the object
var result = _.map(valuesList, function(values){
return _.object(keys, values)
});