gpt4 book ai didi

javascript - lodash:根据对象的子数组创建数组

转载 作者:行者123 更新时间:2023-11-28 06:47:19 26 4
gpt4 key购买 nike

我正在学习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。

最佳答案

此代码适用于两种情况:

// I assume obj is the input object
var result = _.map(obj.z, function(value) {
return {
z : value,
name : obj.name,
email : obj.email
};
});

请注意,对于此示例,您根本不需要 lodash。你可以简单地这样写:

// I assume obj is the input object
var result = obj.z.map(function(value) {
return {
z : value,
name : obj.name,
email : obj.email
};
});

关于javascript - lodash:根据对象的子数组创建数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33300900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com