我有一个像这样的 JSON 对象
{
"headings": [
"col1",
"col2",
"col3",
"col4",
],
"rows": [
[
{
"a": "abc",
"b": def,
},
value1,
value2,
value3
],
[
{
"a": "abc",
"b": def,
},
value1,
value2,
value3
],
]
}
我想像这样将标题转换为对象行的键
{
"rows": [
[
"col1": {
"a": "abc",
"b": def,
},
"col2": value1,
"col3": value2,
"col4": value3
],
[
"col1": {
"a": "abc",
"b": def,
},
"col2": value1,
"col3": value2,
"col4": value3
],
]
}
我看了https://lodash.com/我没有找到任何方法来做到这一点,所以 如果有一个简单的功能/代码可以做到这一点,有人可以帮忙吗?提前致谢!
最佳答案
您可以构建新条目并创建对象。
var data = { headings: ["col1", "col2", "col3", "col4"], rows: [[{ a: "abc", b: "def" }, "value1", "value2", "value3"], [{ a: "abc", b: "def" }, "value1", "value2", "value3"]] },
rows = data.rows.map(a => Object.fromEntries(data.headings.map((k, i) => [k, a[i]])));
console.log({ rows });
.as-console-wrapper { max-height: 100% !important; top: 0; }
用 lodash 的
-
_.map
用于映射, -
_.fromPairs
, 用于获取对象和 -
_.zip
用于转置数组。
var data = { headings: ["col1", "col2", "col3", "col4"], rows: [[{ a: "abc", b: "def" }, "value1", "value2", "value3"], [{ a: "abc", b: "def" }, "value1", "value2", "value3"]] },
rows = _.map(data.rows, a => _.fromPairs(_.zip(data.headings, a)));
console.log({ rows });
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>
关于javascript - 将键分配给 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59811238/