javascript - 循环遍历对象并打印子节点
问题描述
我有以下对象,如果用户在法语站点 (/fr) 上,则显示法语 (fr) 标题。为了实现这一点,我试图遍历对象。
var departments = {
"Department-1": [{
"fr": "Dept 1 - French",
"en": "Dept 1"
}],
"Department-2": [{
"fr": "Dept 2 - French",
"en": "Dept 2"
}],
"Department-3": [{
"fr": "Dept 3 - French",
"en": "Dept 3"
}]
}
if (true || window.location.href.indexOf("fr") > -1) { // true is for this snippet
for (var key in departments) {
if (departments.hasOwnProperty(key)) {
console.log(key + " -> " + departments[key]);
$(".department").append('<option value="' + key + '">' + key + '</option>');
}
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="department"></select>
上面有以下控制台日志:
Department-1 -> [object Object]
Department-2 -> [object Object]
Department-3 -> [object Object]
我的select
标记看起来像这样:
<select class="department" name="department" id="department">
<option>Department-1</option>
<option>Department-2</option>
<option>Department-3</option>
</select>
而我追求的是:
<select class="department" name="department" id="department">
<option>Dept 1 - French</option>
<option>Dept 2 - French</option>
<option>Dept 3 - French</option>
</select>
解决方案
看看这张地图
如果你使用 Object.entries,你需要entry[1][0][lang]
var departments = {
"Department-1": [{
"fr": "Dept 1 - French",
"en": "Dept 1"
}],
"Department-2": [{
"fr": "Dept 2 - French",
"en": "Dept 2"
}],
"Department-3": [{
"fr": "Dept 3 - French",
"en": "Dept 3"
}]
}
lang = "fr"; // from location
$(".department").append(
Object.keys(departments)
.map(key => {
const opt = departments[key][0][lang];
return `<option value="${opt}">${opt}</option>`
})
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class="department">
<option value="">Please select</option>
</select>
推荐阅读
- angular - 根据文化信息动态配置Angular中的数字格式
- javascript - 反应 localStorage 对象属性返回未定义
- python - ValueError:int() 的无效文字,基数为 10:终端中的“favicon.ico”
- mysql - 3张表来计算商品价格
- laravel - 在 Laravel 8 中使用 Tailwind 安装 Font Awesome
- node.js - 如何在猫鼬中填充另一个模型的子文档?
- swift - 核心数据,@Environment(\.managedObjectContext),onMove
- php - phpmyadmin 数据库中的斯洛文尼亚字符未使用 select where 子句获取
- python - 使用 BERT 文本分类,ValueError: too many dimensions 'str' 发生错误
- apache-spark - 在 zeppelin 中获取 java.lang.NoSuchMethodError 运行 spark 代码以使用 SQL DB 创建数据帧