javascript - 在 Javascript 中填充 JSON 中的动态值
问题描述
我有一个包含一些值的数组。我需要使用数组元素动态填充值。下面是主阵列。
list = [{name: 'm1'}, {name: 'm2'},{name: 'm3'},{name: 'm4'},{name: 'm5'},]
我有名为 demo.json 的 JSON
demo: {
listCard = {
'x': 0,
'y': 1,
'name': ''
},
layout: [
{
'col': '3',
'row': '3'
'grids': []
}
]
};
结果应该是——
demo: {
listCard = {
'x': 0,
'y': 1,
'name': ''
},
layout: [
{
'col': '3',
'row': '3'
'grids': [
{
'x': 0,
'y': 1,
'name': 'm1'
},
{
'x': 0,
'y': 1,
'name': 'm2'
}
]
},
{
'col': '3',
'row': '3'
'grids': [
{
'x': 0,
'y': 1,
'name': 'm3'
},
{
'x': 0,
'y': 1,
'name': 'm4'
}
]
},
{
'col': '3',
'row': '3'
'grids': [
{
'x': 0,
'y': 1,
'name': 'm5'
}
]
}
]
};
基本上结果应该像 demo.listcard.name 应该迭代 list.length 次并获取每个值。之后 layout.grid 应该分配给 listcard 的整个对象和 2 个对象。
以下是我使用的方法,但我经常失败。
let listcard = demo.listcard; //here I get listcard object
const layout = demo.layout; // layout object
const noOfScreens = (arr, size) => arr.reduce((acc, e, i) => (i % size ? acc[acc.length - 1].push(e) : acc.push([e]), acc), []);
const screens = noOfScreens(list, 2); // master array is split into arrays of size 2.
for (let i = 0; i < screens.length; i++) {
layout[0].grids.push(layout);
}
我被困在这里。请帮帮我
解决方案
这是你想要的:
const demo = {
listCard: {
'x': 0,
'y': 1,
'name': ''
},
layout: []
};
const list = [{ name: 'm1' }, { name: 'm2' }, { name: 'm3' }, { name: 'm4' }, { name: 'm5' }]
for (var i = 0; i < list.length; i++) {
if (i % 2 == 0) {
demo.layout.push({
'col': '3',
'row': '3',
'grids': [{
'x': 0,
'y': 1,
'name': list[i].name
}]
})
} else {
demo.layout[Math.floor(i / 2)].grids.push({
'x': 0,
'y': 1,
'name': list[i].name
});
}
}
console.log(demo);
推荐阅读
- ruby-on-rails - 如何在 before_update 上反映过程?
- wordpress - 嵌套表格、重力表格之间的计算
- node.js - 在保持文件大小不变的情况下附加到文件的方法
- reactjs - 如何在 Typescript 中定义 React Navigation navigationOptions 参数
- c# - RadGridView 按钮列内容绑定到 DataMember
- wordpress - Woocommerce“新订单”电子邮件未发送
- java - 将 PHP 服务器套接字连接到 Android 客户端套接字
- mysql - 是否可以跨多种语言设置 ASP Classic 和 MYSQL 的数字格式?
- git - 当前修改和另一个参考之间的 Git 差异
- scala - 如何计算 Spark 数据集 w 中的平均向量。斯卡拉?