无法从json对象的json对象中添加键值对

时间:2019-11-08 06:19:07

标签: javascript json

我想从另一个json对象向我的json对象添加键值对。

我尝试阅读许多关于stackoverflow的类似问题,但这些解决方案均不适用于我的情况。

const oValues = {
  action: "Open Browser & Login",
  password: "something",
  url: "https://***manage",
  user: "user1",
}

var mElementsData = {
  pages: [{
    groups: [{
      elements: [{}]
    }]
  }]
};

for (var key in oValues) {
  if (oValues.hasOwnProperty(key)) {
    mElementsData.pages.groups.elements["label"] = key;
    mElementsData.pages.groups.elements["value"] = oValues[key];
  }
}

console.log(mElementsData);

3 个答案:

答案 0 :(得分:1)

您的pagesgroupselements元素都是对象数组,因此您需要引用特定的数组元素([0])来设置值:< / p>

var mElementsData = {
  pages: [{
    groups: [{
      elements: [{}]
    }]
  }]
};

var oValues = {
  key: "value"
};

for (var key in oValues) {
  if (oValues.hasOwnProperty(key)) {
    mElementsData.pages[0].groups[0].elements[0]["label"] = key;
    mElementsData.pages[0].groups[0].elements[0]["value"] = oValues[key];
  }
}
console.log(mElementsData);

答案 1 :(得分:1)

页面 数组 ,因此您必须遍历并用键和值绑定对象配对

var mElementsData = {
   pages: [{
        groups: [{
            elements: [{}]
        }]
    }]
};

var oValues = {
    action: "Open Browser & Login",
    password: "something",
    url: "https://***manage",
    user: "user1",
}

for (var key in oValues) {
    if (oValues.hasOwnProperty(key)) {
        for (let i = 0; i < mElementsData.pages.length; i++) {
            let pages = mElementsData.pages[i]
            for (let j = 0; j < pages.groups.length; j++) {
                pages.groups[j].elements[j][key] = oValues[key]
            }
        }
    }
}
console.log(mElementsData)

答案 2 :(得分:1)

您的嵌套属性不是对象,而是对象数组,因此您不能通过点表示法来访问它们。您可以按索引访问它们,下面是一个示例:

chart.refreshDrawableState();