首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取嵌套对象和数组的值-使用plunker

获取嵌套对象和数组的值-使用plunker
EN

Stack Overflow用户
提问于 2017-06-09 07:21:29
回答 0查看 88关注 0票数 0

我有两个数组,带有嵌套的对象,作为API端点调用的一部分下载,一个(预览)只有数字。

示例:

代码语言:javascript
复制
[{
  obj1:[1, 2],
  obj2:[3, 4]
}]

我不得不对另一个端点进行第二次调用,以获取带有字符串的ID列表

示例:

代码语言:javascript
复制
[{
  obj1:[{
    id:1,
    name:'string_name1'
  }, {
    id:2, 
    name:'string_name2'
  }]
}, {
  obj2:[{
    id:3, 
    name:'string_name3'
  }, {
    id:4, 
    name:'string_name4'
  }]
}];

我需要将ID与对象编号的第一个数组进行匹配,因此我有字符串/文本值可以显示在我的web页面上

我有两个函数

第一个方法是从预览数组中提取数字,并将它们推入我自己的可编辑数组中,我将使用该数组在页面上显示

这是函数运行前的数组

代码语言:javascript
复制
 objName = [['obj1'], ['obj2']];

这是第一个函数,将预览中的名称与数组中的名称进行匹配,并推送值

代码语言:javascript
复制
    setNumbers(){
     for(let i = 0; i < this.objName.length; i++){
           for(var name in this.preview[0]) {
             if (name == this.objName[i][0]){
                  for(var val in  this.preview[0][name]) {
                       this.objName[i].push(this.preview[0][name][val])
                  }
             }

          }
     }
  this.setStrings()
}

第二个方法将字段中的ID与objName中的数字进行匹配,并替换为字符串值

代码语言:javascript
复制
public setStrings(){
  let feildId, feildName;
    for(let i = 0; i < this.fields.length; i++){
      var obj = this.fields[i]
        for(var name in obj) {
          if(this.objName[i][0] == name){
              for(let j = 0; j < obj[name].length; j++){
                feildId = obj[name][j].id
                feildName = obj[name][j].name;
                  for(let x = 0; x < this.objName[i].length; x++){
                    if (this.objName[i][x] == feildId){
                       var index = this.objName[i].indexOf(feildId)
                         if (index !== -1) {
                              this.objName[i][index] = feildName;
                          }

                    }
                  }
              }
          }
        }
    }

console.log(this.objName)
  }

输出的objName数组最终如下所示:

代码语言:javascript
复制
[['obj1', 'string_name1', 'string_name2'], ['obj2', 'string_name3', 'string_name4']]

它有效,但让我的眼睛痛,一定有一个更简单,更干净的方式来做这件事?

柱塞链接:https://plnkr.co/edit/KBDu3ZehHl04er6eut6r?p=preview

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44446997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档