js/es6 子级数据赋往父级
原数据
const data = [ {
type: '1', rule: [
{ id: '1', label: '大神' },
{ id: '2', label: '你好' }
]
}
]
期待效果
const result = [ { type: '1', id: '1', label: '大神', rule: [{ id: '1', label: '大神' }] },
{ type: '1', id: '2', label: '你好', rule: [{ id: '2', label: '你好' }] }
]
也就是把rule里的东西提到上一层来,并保留rule数据,rule里面可能会只有一条数组也可能多条,请教大神们我该如何操作!
在这里先感谢各位大神们的解答,小弟感激不尽!
回答:
Object.assign(data, ...data.rule)
回答:
两种遍历方法
var data = [{ type: '1', rule: [{ id: '1', label: '大神' }, { id: '2', label: '你好' }] }]data.flatMap(({rule,...other})=>{
return rule.map(item=>{
return {rule:[item],...item,...other}
});
})
var data = [{ type: '1', rule: [{ id: '1', label: '大神' }, { id: '2', label: '你好' }] }]data.reduce((acc,{rule,...other})=>{
rule.forEach(item=>{
acc.push({rule:[item],...item,...other});
});
return acc;
},[])
回答:
function transform(arr) { var ret = [];
for (var i = 0; i < arr.length; ++i) {
var item = arr[i], rule = item.rule;
for (var j = 0; j < rule.length; ++j) {
var key, obj = {};
for (key in item) obj[key] = item[key];
for (key in rule[j]) obj[key] = rule[j][key];
obj.rule = [rule[j]];
ret.push(obj);
}
}
return ret;
}
var result = transform(data);
console.dir(result);
回答:
function flattenData(data) { // 创建一个空数组用于存放结果
let result = [];
// 遍历data数组中的每个元素
data.forEach(item => {
// 遍历item.rule属性中的每个对象
item.rule.forEach(obj => {
// 创建一个新对象,将item.type和obj.id, obj.label属性复制到其中
let newObj = { type: item.type, id: obj.id, label: obj.label };
// 将item.rule属性作为新对象的rule属性
newObj.rule = [obj];
// 将新对象推入结果数组中
result.push(newObj);
});
});
// 返回结果数组
return result;
}
以上是 js/es6 子级数据赋往父级 的全部内容, 来源链接: utcz.com/p/936742.html