javascript - 使用键获取对象数组中的对象

标签 javascript node.js lodash

所以我有一个对象数组,我想获取带有键“Z”的对象。

显然,我可以循环遍历数组并逐一检查每个键并获取匹配的键,但我认为可能有比我当前的方法更好的方法:

for (var i = 0; i < data.length; i++) {
    if (Object.keys(data[i]).toString() == "z") {
        return data[i].z;
        break;
    }
}

我的数据:

"data": [
  { "X": { "foo": "bar1" } },
  { "Y": { "foo": "bar2" } },
  { "Z": { "foo": "bar3" } }
]

期望的输出:

{
  "foo": "bar3"
}

最佳答案

您可以将其替换为对象,而不是对象数组:

"data": {
  "X": { "foo": "bar1" },
  "Y": { "foo": "bar2" },
  "Z": { "foo": "bar3" }
}

然后像这样访问你的对象:

data['Z']

如您所见,更加整洁。

我猜您最初使用数组是为了方便附加等,但使用对象也同样简单:

data['A'] = { "foo": "bar4" };

将在数据中创建键“A”,并且您仍然可以使用for (... in ...)循环遍历对象,即:

for (key in data) {
  console.log(data[key].foo);
}

应该打印

bar1
bar2
bar3
bar4

关于javascript - 使用键获取对象数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28751837/

相关文章:

javascript - 多个导出的 Ember.js 加载模型

angularjs - 每次 Angular ng-click 都会进行 API 调用

javascript - Json数据中某个字段的最大数字

javascript - jQuery 中文本框值中的数字不可更改

javascript - 鼠标悬停在父级上时自动子级高度

node.js - 我正在尝试从 DynamoDB 表获取各个属性,并在回调之前将它们转换为变量

javascript - Node 和 express 。返回给用户并继续执行

javascript - 将 lodash every() 函数作为参数传递给 Rx.JS map() 运算符

javascript - 如何用更合适的 lodash 函数替换嵌套的 foreach 循环?

javascript - onbeforeunload 事件不会在浏览器按钮单击时触发,但在 CMD+R/F5 上工作