当前位置: 首页 > 知识库问答 >
问题:

在另一个没有数组的对象中读取和推送对象

关宏毅
2023-03-14

我试图从JSON检查并推送对象细节中的对象。

这就是我的JSON的样子

{
  "stylesheet": {
    "attribute-set": [
      {
        "attribute": [
          {
            "_name": "text-align",
            "__prefix": "xsl",
            "__text": "end"
          },
          {
            "_name": "end-indent",
            "__prefix": "xsl",
            "__text": "10pt"
          }
        ],
        "_name": "odd__header",
        "__prefix": "xsl"
      },     
      {
        "attribute": {
          "_name": "font-weight",
          "__prefix": "xsl",
          "__text": "bold"
        },
        "_name": "pagenum",
        "__prefix": "xsl"
      }
      ],
    "_xmlns:xsl": "http://www.w3.org/1999/XSL/Transform",
    "_xmlns:fo": "http://www.w3.org/1999/XSL/Format",
    "_version": "2.0",
    "__prefix": "xsl"
  }
}

现在,我尝试读取属性集值[1]ie;“pagenum”。在这里,我试图用name检查更多属性值。如果不存在,则将其推入该属性集中。

由于属性集[0]位于数组中,所以我在将其推入属性集[0]时没有任何问题。这里我得到了属性集中的单个对象[1]。

尝试对属性集[1]执行此操作,但引发错误-uncaughttypeerror:$scope。contentObj。样式表。属性集[1]。属性有些不是功能

//for checking font name
            var checkcontentPageFont = obj => obj._name === 'font-family';
            // check font family
            var checkcontentPageFont_available = $scope.contentObj.stylesheet["attribute-set"][1].attribute.some(checkcontentPageFont);

            if(checkcontentPageFont_available  === true ){
            }
            else{
                 $scope.contentObj.stylesheet["attribute-set"][1].attribute.push({
                            "_name": "font-family",
                            "__prefix": "xsl",
                            "__text": "sans"
                          }
                          );                
            }

我可以成功地实现上面的代码,如果有一个数组像属性集[0]。我如何检查单个对象。如果没有找到推送,数组将在属性集[1]上创建?

共有1个答案

邢灿
2023-03-14

在您的示例$scope.contentObj.stylesheet.attribute-set[0]。属性确实是一个数组,而$scope.contentObj.stylesheet.attribute-set[1]。属性是一个对象没有一些()方法。我假设这只是一个错别字,所以我把$scope.contentObj.stylesheet.attribute-set[1]。属性也变成了一个数组,现在一切似乎都正常工作了:

const data = {
  "stylesheet": {
    "attribute-set": [
      {
        "attribute": [
          {
            "_name": "text-align",
            "__prefix": "xsl",
            "__text": "end"
          },
          {
            "_name": "end-indent",
            "__prefix": "xsl",
            "__text": "10pt"
          }
        ],
        "_name": "odd__header",
        "__prefix": "xsl"
      },     
      {
        "attribute": [
          {
            "_name": "font-weight",
            "__prefix": "xsl",
            "__text": "bold"
          },
          {
            "_name": "pagenum",
            "__prefix": "xsl"
          }
        ]  
      }
    ],
    "_xmlns:xsl": "http://www.w3.org/1999/XSL/Transform",
    "_xmlns:fo": "http://www.w3.org/1999/XSL/Format",
    "_version": "2.0",
    "__prefix": "xsl"
  }
}

const checkcontentPageFont = obj => obj._name === 'font-family';

const checkcontentPageFont_available = data.stylesheet["attribute-set"][1].attribute.some(checkcontentPageFont);

if (!checkcontentPageFont_available) {
  data.stylesheet["attribute-set"][1].attribute.push({
    "_name": "font-family",
    "__prefix": "xsl",
    "__text": "sans"
  });  
}

console.log(data);
 类似资料:
  • 我有这样的数据响应 然后我想把颜色推到物品里面 预期:每个索引项有三(3)个变量 我尝试使用push和concat,但出现错误“无法读取未定义的属性“数据” 这是我的密码

  • 问题内容: 在我目前正在从事的一个项目中,我遇到了一个角度异常: 在寻找解决方案的搜索中,我直接在浏览器中输入了Web服务的URL,但令人惊讶的是,我没有收到预期的数组。 Web服务类: 当我输入网址时,我希望看到带有JSON对象的JSON数组: 但是,相反,我收到的JSON对象的属性与我期望的JSON对象相同,没有任何数组: 所以我想知道为什么没有数组,当我添加另一个Clazz对象时会发生什么。

  • 我有一组这样的对象: 我想对其进行过滤,以便每个唯一名称都有一个实例,该实例必须给出小于或等于40的最大值。如果过滤,上述情况将返回: 最终的数组不必按任何特定的顺序排序。

  • 现在我有了新阵列 现在,现有的_array和新的_array都有名称值“b”,我希望它从新数组中移除

  • 问题内容: 我有两个对象数组。我想基于PermissionObj过滤数据。 这是即将形成的数据库。这是permissionObj中的子数组的数组。 这是静态数据。我想比较基于PermissionObj的数据。 我正在尝试基于 对象 的 PermissionObj数组 过滤 对象 的 数据数组 。这是我尝试的代码。 如果PermissionObj值将与data值匹配。然后显示数据。 我接受的输出将是

  • 我正在开发一个使用Expressjs、Mongodb和Mongoose的服务器。我需要将一个元素(字符串)推入“tweets”数组,该数组位于对象(朋友)内部,而对象(朋友)又位于“friends”数组内部,而“friends”数组位于“users”对象内部,该对象在“users”集合中记录。下面是Mongodb集合中的文档的示例: 我需要首先从“users”数组中选择指定的用户名,然后访问这个用