【问题标题】:Iterating over Object of Objects to create Array迭代对象对象以创建数组
【发布时间】:2019-05-24 00:05:02
【问题描述】:

我有一个Object,其中包含更多我想要迭代的objects。结构是这样的:

最后,我想创建一个array,其中父对象key指向子对象的标题列中的value,所以我可以稍后发布到一些 PHP 脚本,即我想要:

BusinessJustification => 'titleValue'
Contract => 'titleValue'
...

但我真的很难真正循环遍历数组。

我尝试了以下两种方法,虽然我可以遍历父对象,但我似乎很难访问子对象中的值,它们只是分别显示为索引位置或undefined

for (var fields in this.postData) {
    for (var columns in fields){
        console.log(columns['title']);
    }
}

for (var fields in this.postData) {
    for (var columns in fields){
        console.log(Object.entries(columns['title']));
    }
}

任何帮助都将不胜感激,因为我真的很摸不着头脑,并且在网上尝试了一些东西。

【问题讨论】:

  • 为了帮助您,请提供对象
  • 我试图在我包含的图片中。这还不够吗?
  • 只要您能够从/向图片复制/粘贴文本就足够了。
  • 你想用这些值做什么?因为columns['title']; 只访问属性中的值,所以它不 用它做任何事情。
  • 抱歉,实际上是我的错字,我使用的是 console.log

标签: javascript object vue.js


【解决方案1】:

我最终想创建一个array,其中父对象的key 指向子对象标题列中的value

您不能像在PHP 中那样使用Javascript 中的这些属性生成arrayPHP 中的数组实际上是有序的mapmap 是一种将valueskeys 关联的类型。但您可以创建Javascript ObjectMap。但是,如果您要将数据发送到某些服务器端 PHP 脚本,我相信第一个选项是您需要的。

我相信你正在寻找这个:

const postData = {
    BusinessJustification: {blur: true, title: "business-title", valid: true},
    Contact: {blur: true, title: "contact-title", valid: true},
    Department: {blur: true, title: "department-title", valid: true},
}

let newObj = {};

for (const field in postData)
{
  newObj[field] = postData[field].title;
}

console.log(newObj);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

【讨论】:

  • 完美,正是我想要的。没想到这么简单!
猜你喜欢
  • 2018-10-19
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 2021-08-08
  • 2021-06-22
  • 1970-01-01
  • 1970-01-01
  • 2014-07-11
相关资源
最近更新 更多