javascript - 循环嵌套对象并在 html 上打印对象键和值
问题描述
我想创建一个controlgroup
包含类别(语言)和子项(复选框)的类别。我对我找到的资源有点困惑,我应该使用 map/filter/redude 还是应该使用 Objects.key、Objects.value 和 for in 循环。
我可以通过孩子们循环,map
但我不能继续外循环。
obj = [
{
"javascript": [
{"product": "1234"},
{"product": "4321"}
]
},
{
"python": [
{"product": "9876"}
]
}
];
// This is what I'm trying
const mountControlgroup = (language) => {
return (
language.map( (element) => (
`<label for="ticker_id1">${element.product}</label>
<input type="checkbox" name="insurance" id="${element.product}">`
))
)
}
console.log(mountControlgroup(obj))
这是一个运行示例
解决方案
考虑以下:
https://jsfiddle.net/Twisty/edon2utx/20/
HTML
<div class="widget">
<h1>Controlgroup</h1>
</div>
JavaScript
$(function() {
var myObj = [{
"javascript": [{
"product": "1234"
},
{
"product": "4321"
}
]
},
{
"python": [{
"product": "9876"
}]
}
];
function makeGroup(dObj, tObj, vert) {
var keys = Object.keys(dObj);
var fs = $("<fieldset>").appendTo(tObj);
var legend = $("<legend>").html(keys[0]).appendTo(fs);
var cg = $("<div>", {
class: "controlgroup"
}).appendTo(fs);
$.each(dObj[keys[0]], function(k, v) {
$("<label>", {
for: "ticker-" + v.product
}).html(v.product).appendTo(cg);
$("<input>", {
type: "checkbox",
name: "insurance",
value: v.product,
id: "ticker-" + v.product
}).appendTo(cg);
});
if (vert == undefined) {
cg.controlgroup();
} else {
cg.controlgroup({
"direction": "vertical"
});
}
}
$.each(myObj, function(i, g) {
makeGroup(g, $(".widget"));
});
});
你的小提琴有很多问题。我先纠正了这些。
关于迭代你的对象,有很多方法可以做到这一点。我构建了一个构建一个组的函数,主要使用以下模板:
<fieldset>
<legend>{Key}</legend>
<div class="controlgroup">
<label for="ticker-{Value}">{Value}/label>
<input type="checkbox" name="insurance" value="{Value}" id="ticker-{Value}">
</div>
</fieldset>
每个组都需要一个fieldset
,这将成为该组中所有控制元素的容器。
如果你有一个垂直控件,你可以像这样使用它:
makeGroup({ php: [{ product: 9876 }] }, $(".widget"), true);
最后一个参数是可选的。示例:https ://jsfiddle.net/Twisty/edon2utx/26/
推荐阅读
- laravel-5 - 如何使用 Eloquent 范围获取最后一条记录?
- javascript - 一种遍历集合的跨浏览器方式。JS
- reactjs - 使用 React js 在 bootstrap 4 中获取导航栏的状态
- r - 我如何创建一个函数 gentimes() 来创建一个点的 nreps(w1,w2)
- html - 如何设置 Materialize 选择元素的大小?
- jmeter - JMETER:条件失败并出现语法错误
- c# - 我的机器的Application pool在Windows服务开发中消费第三方rest服务的作用是什么
- php - Laravel - 无法添加外键约束
- python - 为什么这个 Python 代码的 while 循环在运行时不会停止?
- linux - 如何打印在 linux elf 二进制文件中记录的编译目录?