将对象添加到数组对象

时间:2018-03-27 19:10:23

标签: javascript jquery angular typescript

如果条件为真,我试图将对象添加到现有数组中。

以下是我的代码

RequestObj = [{
    "parent1": {
        "ob1": value,
        "ob2": {
            "key1": value,
            "key2": value
        },
    },
},
{
    "parent2": {
        "ob1": value,
        "ob2":{
            "key1":value,
            "key2": value
        }
    }
}]

如果条件为真,我试图在RequestObj数组中添加一个对象。我可以做RequestObj.push()。但我不知道如何在parent1对象中添加。

if (key3 !== null) {
    // add this below object to parent1 object
    "ob3": {
        "key1": value,
        "key2": value
    }
}

我找不到任何解决方案。请帮忙

2 个答案:

答案 0 :(得分:3)

向元素添加元素的方法是push它。

// Create new object
var newObject = {
    "ob3": {
        "key1": value,
        "key2": value
    }
};
// Add new object to array
RequestObj.push(newObject);

您也可以直接将对象推入数组而不首先声明变量:

// Add new object to array
RequestObj.push({
    "ob3": {
        "key1": value,
        "key2": value
    }
});

<强>更新

如果您没有推入数组但是向数组内的对象添加新属性,则需要知道数组中元素的位置,例如第一个元素的RequestObj[0]

然后在该元素中,您需要向parent1对象(RequestObj[0].parent1)添加新属性:

RequestObj[0].parent1.ob3 = {
      "key1": "A",
      "key2": "B"
 };

var RequestObj = [{
  "parent1": {
    "ob1": "A",
    "ob2": {
      "key1": "B",
      "key2": "C"
    },
  },
  "parent2": {
    "ob1": "D",
    "ob2": {
      "key1": "E",
      "key2": "F"
    }
  }
}];

var key3 = 'somethingNotNull';

if (key3 !== null) {
  RequestObj[0].parent1.ob3 = {
      "key1": "A",
      "key2": "B"
  };
}
console.log(RequestObj);

答案 1 :(得分:0)

你应该循环迭代RequestObj并按键parent1查找对象。

为此您可以使用.filter这样的功能:

for(let i = 0; i < RequestObj.lenght; i++) {
   let found_object = RequestObj[i].filter(function (r) {
      return r == 'parent1'
   });
}

然后您可以通过found_object执行操作。