【问题标题】:Javascript Inserting an object "inside"(each index having object already) an array of objectsJavascript在“内部”插入一个对象(每个索引都有对象)一个对象数组
【发布时间】:2019-08-05 07:42:45
【问题描述】:

我有一个像 [{0},{1},{2}..] 这样的 json 响应,每个索引都包含对象数据。我还有一个像a{} 这样的对象,它也包含对象数据。我想要的是在每个索引(如[{0..a},{1..a},{2a}])中添加一个“内部”(最后)对象。

【问题讨论】:

  • 你能播种预期的输出 bcz,JSON 对象 [{0..a},{1..a},{2a}] 不是这样的,它总是包含像 [ {0:"a'"}..]
  • 你想将对象添加到其他对象吗?

标签: javascript arrays json object


【解决方案1】:

使用 JSON.parse 解析 json 响应,然后对其进行迭代并在每个对象中添加对象

var resp = '[{"data":"1"},{"data":"2"},{"data":"3"},{"data":"4"}]';
var arr = JSON.parse(resp);
console.log(arr);

var a = {
  data: 5
};

arr.forEach(function(element,i) {
    arr[i].a = a;
});
console.log(arr)

【讨论】:

    【解决方案2】:

    因此,假设您的 json 响应位于某个变量中(假设它被称为 jsonResponse)并且 a 是您可以执行的对象:

    jsonResponse.push(a)
    

    这会将 a 对象添加到 jsonResponse 数组的末尾。

    这假设 jsonResponse 是一个数组,如果它是一个字符串,你可能需要做类似的事情:

    let jsonResponse = JSON.parse(responsestring)
    

    【讨论】:

    • push 会将对象添加到 JsonResponse 数组的末尾,但我希望它位于 JsonResponse 的每个索引内,例如 JsonResponse [{0,a},{1,a}]。您所说的将执行此 JsonResponse[{0},{1},{a}]
    • @Rizwan Ashraf 请参阅 Syed Mehtab Hassan 的回复,该回复将满足您的要求。在不了解您的用例的情况下:复制类似的东西似乎是不好的做法。最好定义一次,然后让你的代码引用它。
    【解决方案3】:

    您的问题并不完全清楚,但听起来您想查看 array.map。

    例如:

    let arr = [{x:1,y:2},{x:3,y:4}];
    const foo = arr.map(obj=>{obj.z=42; return obj})
    console.log("GOT:", foo);
    

    【讨论】:

      【解决方案4】:

      组合两个 json 对象:

      function combineObj(ob1, ob2) {
          return Object.fromEntries(Object.entries(ob1).concat(Object.entries(ob2)));
      }
      
      var a = [{b:1},{q:3},{s:2}],
          b = {a:2};
      var result = a.map(x=>combineObj(x,b));
      console.log(result);

      【讨论】:

        【解决方案5】:

        据我了解,您希望将对象 A 添加到 JSON 响应中的每个对象?

        如果是这样试试:

        var jsonResponse = [{a: 1}, {a: 1}, {a: 1}]
        var objToAppend = {b:2}
        
        for(var objectInJsonResponse of jsonResponse){
            objectInJsonResponse.appendedObject = objToAppend;
        }
        

        这将导致:

        console.log(jsonResponse)
        [{a:1,appendedObject:{b:2}},{a:1,appendedObject:{b:2}},{a:1,appendedObject:{b:2}}]
        

        当然,您可以将 appendedObject 的名称更改为您想要的任何密钥。

        【讨论】:

          猜你喜欢
          • 2014-06-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-03
          • 2020-07-22
          相关资源
          最近更新 更多