JS 中的嵌套对象循环
Nested Object Loop in JS
我正在尝试向嵌套对象添加一系列值,但在使用以下代码中的循环时遇到了一些问题。非常感谢任何帮助。
let settings = {};
function write(id, values) {
if(!settings[id]) settings[id] = {};
for(var x = 0; x < Object.keys(values).length; x ++) {
settings[id][values[x]] = values[values[x]];
}
}
//example
write('example', {'prop1': 5, 'prop2': 10});
values
是一个对象。访问 values[x]
将 return 未定义。
您必须使用该对象中的正确键访问它,如下所示。
let settings = {};
function write(id, values) {
if (!settings[id]) settings[id] = {};
const keys = Object.keys(values);
for (var x = 0; x < keys.length; x++) {
settings[id][keys[x]] = values[keys[x]];
}
console.log(settings)
}
//example
write('example', { 'prop1': 5, 'prop2': 10 });
您正在尝试使用 x
索引对象 values
,这是一个数字。要遍历对象的键,您可以使用 for...in
循环:
function write(id, values) {
if(!settings[id]) settings[id] = {};
for(const key in values) {
settings[id][key] = values[key];
}
}
另一种方法是使用对象解构:
function write(id, values) {
settings[id] = { ...(settings[id] || {}), ...values };
}
尝试将 Object.keys(values) return 保存在另一个变量中,并在这样的设置中使用它来赋值
function write(id, values) {
if(!settings[id]) settings[id] = {};
const key = Object.keys(values)
for(var x = 0; x < key.length; x ++) {
settings[id][key[x]] = values[key[x]];
}
}
我正在尝试向嵌套对象添加一系列值,但在使用以下代码中的循环时遇到了一些问题。非常感谢任何帮助。
let settings = {};
function write(id, values) {
if(!settings[id]) settings[id] = {};
for(var x = 0; x < Object.keys(values).length; x ++) {
settings[id][values[x]] = values[values[x]];
}
}
//example
write('example', {'prop1': 5, 'prop2': 10});
values
是一个对象。访问 values[x]
将 return 未定义。
您必须使用该对象中的正确键访问它,如下所示。
let settings = {};
function write(id, values) {
if (!settings[id]) settings[id] = {};
const keys = Object.keys(values);
for (var x = 0; x < keys.length; x++) {
settings[id][keys[x]] = values[keys[x]];
}
console.log(settings)
}
//example
write('example', { 'prop1': 5, 'prop2': 10 });
您正在尝试使用 x
索引对象 values
,这是一个数字。要遍历对象的键,您可以使用 for...in
循环:
function write(id, values) {
if(!settings[id]) settings[id] = {};
for(const key in values) {
settings[id][key] = values[key];
}
}
另一种方法是使用对象解构:
function write(id, values) {
settings[id] = { ...(settings[id] || {}), ...values };
}
尝试将 Object.keys(values) return 保存在另一个变量中,并在这样的设置中使用它来赋值
function write(id, values) {
if(!settings[id]) settings[id] = {};
const key = Object.keys(values)
for(var x = 0; x < key.length; x ++) {
settings[id][key[x]] = values[key[x]];
}
}