将对象转换成角度数组

时间:2018-12-17 06:43:28

标签: javascript arrays angularjs json

我是javascript和angular的新手。假设我有一个{"xyz":{Key:info}}的JSON对象。我想将{Key:info}添加到数组中。

我想将“ xyz” 设置为数组。例如:{"xyz":[{Key:info}]},以便可以将{Key:info}的更多部分推入该数组-{"xyz":[{Key:info},{Key:info},{Key:info}]}

我还需要每次检查 xyz 是否是对象,然后将其设置为数组并仅推送一次。

我不知道如何使用有角度的javascript。

编辑:- 添加了orig JSON

$scope.ContentObj= {
      "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"
        }
      ],
      "_version": "2.0",
      "__prefix": "xsl"
    }

3 个答案:

答案 0 :(得分:2)

这可能是您要问的。

if (!angular.isArray($scope.yourObject.xyz)){
    $scope.yourObject = {
        xyz: []
    }
}
$scope.yourObject.xyz.push({Key:'info'})

答案 1 :(得分:2)

您可以使用typeof来了解它是否是一个对象,然后可以获取其内容并使用它初始化一个数组

let myObject = {"xyz":{Key:"info"}};

if(typeof myObject.xyz === "object"){ //Check if object
  const content = myObject.xyz; //Get the content
  myObject.xyz = [content]; //Put the content in an array
}

console.log(myObject);

如果您需要按照注释中的要求在代码中使用它:

if(typeof $scope.ContentObj.stylesheet["attribute-set"][4].xyz === "object"){ //Check if object
  const content = $scope.ContentObj.stylesheet["attribute-set"][4].xyz; //Get the content
  $scope.ContentObj.stylesheet["attribute-set"][4].xyz = [content]; //Put the content in an array
}

console.log(myObject);

答案 2 :(得分:1)

尝试这种方式。

$scope.yourObject.xyz.push(Object.assign([], yourObject))