我想从另一个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);
答案 0 :(得分:1)
您的pages
,groups
和elements
元素都是对象数组,因此您需要引用特定的数组元素([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();