[英]How add new Key/value in nested child object in javascript?
我需要将新的键/值对添加到嵌套的 object 数组中。
这是现有数组
[{
"featureId": "67d6e1bf-3919-4dcc-b636-236ab41d431b",
"featureName": "Test name 1",
"rules": [
{
"ruleId": "a9ab3ce2-e69c-4c0c-b561-1107baed1e68",
"ruleName": "Sub test 1",
},
{
"ruleId": "a9ab3ce2-e69c-4c0c-b561-1107baed1e68",
"ruleName": "Sub Test 2",
},
{
"ruleId": "a8003493-4471-4c8a-85c1-b15706359bb3",
"ruleName": "Sub Test Three",
}
]
},
{...}
]
我需要在规则 object 项中添加其他属性。
预计 output 是
[{
"featureId": "67d6e1bf-3919-4dcc-b636-236ab41d431b",
"featureName": "Test name 1",
"rules": [
{
"ruleId": "a9ab3ce2-e69c-4c0c-b561-1107baed1e68",
"ruleName": "Sub test 1",
"temp_id" : 1
},
{
"ruleId": "a9ab3ce2-e69c-4c0c-b561-1107baed1e68",
"ruleName": "Sub Test 2",
"temp_id" : 1
},
{
"ruleId": "a8003493-4471-4c8a-85c1-b15706359bb3",
"ruleName": "Sub Test Three",
"temp_id" : 1
}
]
},
{...}
]
我需要动态添加 temp_id 属性。 我在下面尝试过它没有按预期工作
Object.keys(_this.existingConfigurations).map((key)=>_this.existingConfigurations[key].rules).reduce((n,id)=>n).map((ny,ni)=>{return {...ny, temp_id : uuid.v4()}});
这里“_this.existingConfigurations”是有数据的变量,我需要做上面的修改并发送到下一级。
你可以用几个map
和健康剂量的 object 重组来解决这个问题:
const initial = [
{
featureId: "67d6e1bf-3919-4dcc-b636-236ab41d431b",
featureName: "Test name 1",
rules: [
{
ruleId: "a9ab3ce2-e69c-4c0c-b561-1107baed1e68",
ruleName: "Sub test 1",
temp_id: 1,
},
{
ruleId: "a9ab3ce2-e69c-4c0c-b561-1107baed1e68",
ruleName: "Sub Test 2",
temp_id: 1,
},
{
ruleId: "a8003493-4471-4c8a-85c1-b15706359bb3",
ruleName: "Sub Test Three",
temp_id: 1,
},
],
},
];
const result = initial.map((feature) => ({
...feature,
rules: feature.rules.map((rule) => ({ ...rule, temp_id: 1 })),
}));
var existingConfigurations = [{ "featureId": "67d6e1bf-3919-4dcc-b636-236ab41d431b", "featureName": "Test name 1", "rules": [ { "ruleId": "a9ab3ce2-e69c-4c0c-b561-1107baed1e68", "ruleName": "Sub test 1", }, { "ruleId": "a9ab3ce2-e69c-4c0c-b561-1107baed1e68", "ruleName": "Sub Test 2", }, { "ruleId": "a8003493-4471-4c8a-85c1-b15706359bb3", "ruleName": "Sub Test Three", } ] }]; existingConfigurations = _.map(existingConfigurations, (item) => ({...item, rules: _.map(_.get(item, 'rules'), (rule, idx) => ({...rule, temp_id: idx })) })); console.log(existingConfigurations);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js"></script>
你可以参考下面的例子。
希望这有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.