javascript - javascript中的Json自定义问题
问题描述
handleHitDrop = (arr) => {
for (let i = 0; i < arr.length; i++) {
let hit_drop = arr[i]["Z" + (i + 1)]["Drop"][0] + arr[i]["Z" + (i + 1)]["Hit"][0]
arr[i]["Z" + (i + 1)] = hit_drop
}
console.log(arr)
}
data = [{
"Z1": {
"Drop": [
0
],
"Hit": [
0
]
},
"Z2": {
"Drop": [
0
],
"Hit": [
1
]
},
"Z3": {
"Drop": [
1
],
"Hit": [
1
]
}
}]
handleHitDrop(data)
预期结果:
[
{
"Z1": 0,
"Z2": 1,
"Z3": 2
}
]
在这里,我正在尝试自定义我现有的 json。尝试添加 Drop 和 Hit 的第一个元素并分配给父键。
这是我尝试做的事情,但它只适用于第一个(Z1)
解决方案
您应该避免使用文字“Z”和序列号来制作这些数组属性。只需遍历属性。 Object.entries
并且Object.fromEntries
可以用于一个很好的功能方法:
let data = [{"Z1": {"Drop": [0],"Hit": [0]},"Z2": {"Drop": [0],"Hit": [1]},"Z3": {"Drop": [1],"Hit": [1]}}]
data = data.map(obj => Object.fromEntries(
Object.entries(obj).map(([z, {Drop, Hit}]) => [z, Drop[0] + Hit[0]])
));
console.log(data);
您自己的代码的问题在于i
整个数组中的索引,而不是Z
属性:为此,您需要另一个嵌套循环。
推荐阅读
- debugging - 如何使用 OpenEdge 调试器 (OpenEdge Debugger 11.6)
- reactjs - 在 React / Typescript / Redux 运行时更改 Monaco 编辑器选项
- google-api - 用于 .Net 核心的服务器端应用程序的 Google 登录
- c - 假设指向同一个变量的两个指针是非法的/UB,为什么 C 编译器不能优化更改 const 指针的值?
- request - Chrome 开发工具。没有内容长度标头时如何检查请求的传出大小?
- c# - PowerBI Embed 令牌请求返回错误“提供的角色无效”
- c# - 是否可以将添加、删除和列表功能移动到单独的方法中
- java - 默认 log4j 策略
- sql - SQL 合并变量数量(母项)
- ios - SwiftUI:菜单打开时如何忽略背景上的点击?