我有一个清单
data = [{
value1:[1,2],
value2:[{type:'A'}, {type:'B'}]
},{
value1:[3,5],
value2:[{type:'B'}, {type:'B'}]
}]
这是我的列表格式,我想将此列表格式化为
data = [
{type:'A', value: [1,2]},
{type:'B', value: [3,5]}
]
答案 0 :(得分:0)
如果您期望以下结果
data = [
{type:'A', value: [1,2]},
{type:'B', value: [3,5]}
]
这就是你想要的
data = [{
value1:[1,2],
value2:[{type:'A'}, {type:'B'}]
},{
value1:[3,5],
value2:[{type:'B'}, {type:'B'}]
}]
data.forEach(function(item, index){
var obj = {};
obj.type = item.value2[0].type;
obj.value = item.value1;
console.log(obj);
})
答案 1 :(得分:0)
您可以使用两个forEach()
循环执行此操作,并在第一个thisArg
循环中将对象作为forEach()
参数。
var data = [{
value1: [1, 2],
value2: [{
type: 'A'
}, {
type: 'B'
}]
}, {
value1: [3, 5],
value2: [{
type: 'B'
}, {
type: 'B'
}]
}]
var result = [];
data.forEach(function(o, i) {
var that = this;
o.value2.forEach(function(t) {
if (!that[t.type]) {
that[t.type] = {
type: t.type,
value: []
}
result.push(that[t.type]);
}
if (!that[i + '|' + t.type]) {
that[t.type].value = that[t.type].value.concat(o.value1);
that[i + '|' + t.type] = true;
}
})
}, {})
console.log(result)

答案 2 :(得分:0)
您可以迭代并查找值。
var data = [{ value1: [1, 2], value2: [{ type: 'A' }, { type: 'B' }] }, { value1: [3, 5], value2: [{ type: 'B' }, { type: 'B' }] }],
grouped = [];
data.forEach(function (a) {
a.value2.forEach(function (b) {
if (!this[b.type]) {
this[b.type] = { type: b.type, value: [] };
grouped.push(this[b.type]);
}
a.value1.forEach(function (c) {
if (this[b.type].value.indexOf(c) < 0) {
this[b.type].value.push(c);
}
}, this);
}, this);
}, Object.create(null));
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }