【发布时间】:2015-10-23 11:09:34
【问题描述】:
我正在学习 Lodash 这是一个 javascript 库。
在这里,我有一个类似的对象:
场景 #1:
{
name: 'abc'
email: 'abc@example.com'
z: [
{
time: '<any-time>',
t: 't1'
},
{
time: '<any-time>',
t: 't2'
},
{
time: '<any-time>',
t: 't3'
}
]
}
我想要使用 lodash 的结果:
[
{
name: 'abc'
email: 'abc@example.com'
z: [
{
time: '<any-time>',
t: 't1'
}
]
},
{
name: 'abc'
email: 'abc@example.com'
z: [
{
time: '<any-time>',
t: 't2'
}
]
},
{
name: 'abc'
email: 'abc@example.com'
z: [
{
time: '<any-time>',
t: 't3'
}
]
}
]
场景 #2:
{
name: 'abc'
email: 'abc@example.com'
z: [
{
time: '<any-time>',
t: 't1'
},
{
time: '<any-time>',
t: 't1' // see here t1 repeated
},
{
time: '<any-time>',
t: 't3'
}
]
}
那么结果应该是:
[
{
name: 'abc'
email: 'abc@example.com'
z: [
{
time: '<any-time>',
t: 't1'
},
{
time: '<any-time>',
t: 't1'
}
]
},
{
name: 'abc'
email: 'abc@example.com'
z: [
{
time: '<any-time>',
t: 't3'
}
]
}
]
如果我的详细信息还不清楚,请告诉我。
谢谢:)
编辑: 我尝试了以下代码,
var finalArr = [];
var baseInfo = _.omit(obj, 'z');
var childArr = obj.z;
for(var j = 0; j < childArr.length; j++){
var flattenObj = angular.copy(baseInfo);
flattenObj.z = [];
flattenObj.z.push(childArr[j]);
finalArr.push(flattenObj);
}
它只处理场景#1。而且我认为它比 lodash 使用更多的 javascript。
【问题讨论】:
-
@user2415266 检查我的编辑
标签: javascript lodash