我有一个格式为的字典
dictionary = {0: {object}, 1:{object}, 2:{object}}
Run Code Online (Sandbox Code Playgroud)
我怎样才能通过做类似的事情来遍历这本词典
for((key,value) in dictionary){
//Do stuff where key would be 0 and value would be the object
}
Run Code Online (Sandbox Code Playgroud) var user = {};
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个setUsers()接受键/值对对象并初始化user变量的方法.
setUsers = function(data) {
// loop and init user
}
Run Code Online (Sandbox Code Playgroud)
数据如下:
234: "john", 23421: "smith", ....
Run Code Online (Sandbox Code Playgroud) 这是我的原始代码:
const buildTableContent = (settings) => {
const entries = [];
for (const key in settings) {
for (const subkey in env[key]) {
Run Code Online (Sandbox Code Playgroud)
settings 基本上是字典的字典
{
'env': {'name': 'prod'},
'sass: {'app-id': 'a123445', 'app-key': 'xxyyzz'}
}
Run Code Online (Sandbox Code Playgroud)
它触发了以下AirBnb样式指南错误:
35:3错误for..in循环迭代整个原型链,这几乎不是你想要的.使用Object.{keys,values,entries},并迭代生成的数组无限制语法
所以我将代码更改为
const buildTableContent = (settings) => {
const entries = [];
for (const key of Object.keys(settings)) {
for (const subkey of Object.keys(env[key])) {
Run Code Online (Sandbox Code Playgroud)
如建议.
现在,当我跑步时lint,我得到了这个:
35:3错误迭代器/生成器需要再生器 - 运行时,这对于本指南来说太重了.另外,应避免循环,以支持数组迭代无限制语法
所以它看起来像他们违反了一些皮棉风格.
我该如何解决这个问题?
假设我有一个对象数组,这里我假设对象具有三个属性,但可能更多,我想用属性名称提取其中一些:
objArr = [{
name : "name",
description : "description",
date : "date"
},{
name : "name",
description : "description",
date : "date"
},{
name : "name",
description : "description",
date : "date"
}]
Run Code Online (Sandbox Code Playgroud)
name比如说,我只想从上述 中提取 的值objArr。我可以使用以下方法来做到这一点:
(function(objArray){
objArray.forEach(function(arrObjItem) {
for(let name in arrObjItem) {
if(arrObjItem.hasOwnProperty(name)) {
console.log(objArrItem.name)
}
}
})
})(objArr)
Run Code Online (Sandbox Code Playgroud)
但我真正想要的是提取两个以上属性的值name和description/或值,如果问题具有不同的数据结构,每个对象有更多属性。最后,我想创建这些提取的属性的映射。(或具有提取的属性、值的新对象数组)(或具有提取的属性、值对的元组)。
javascript ×3
iteration ×2
ecmascript-6 ×1
eslint ×1
for-loop ×1
key-value ×1
loops ×1
object ×1