Javascript循环一个数组对象并导入另一个文件
首先,我不知道该如何描述这种情况。但是,我想定义一个对象来最小化代码。下面是一个例子:Javascript循环一个数组对象并导入另一个文件,javascript,Javascript,首先,我不知道该如何描述这种情况。但是,我想定义一个对象来最小化代码。下面是一个例子: let addtionalStatus = { ports: [ 1: { someKeys: "", someOtherKeys: "" }, 2: { someKeys: "", someOtherKeys: "" }, 3
let addtionalStatus = {
ports: [
1: {
someKeys: "",
someOtherKeys: ""
},
2: {
someKeys: "",
someOtherKeys: ""
},
3: {
someKeys: "",
someOtherKeys: ""
}
n: {
someKeys: "",
someOtherKeys: ""
}
]
}
这是我的代码:
let additionalStatus = {
ports: []
};
for(let i; i <= n; i++){
additionalStatus.ports[i].someKeys = "";
additionalStatus.ports[i].someOtherKeys = "";
}
export {additionalStatus};
试试这个:
let additionalStatus = {
ports: []
};
let ports = [];
for (let i = 1; i <= n; i++) {
let obj = {
someKeys: false,
someOtherKeys: ''
};
ports.push(i);
ports[i] = obj;
}
additionalStatus.ports = ports;
export { additionalStatus };
让附加状态={
端口:[]
};
让端口=[];
对于(让i=1;i你应该这样做
let additionalStatus = {ports: []}
for (let i = 0; i < 10; i++) {
additionalStatus.ports.push({
someKeys: "",
someOtherKeys: ""
});
}
console.log(additionalStatus);
// OUTPUT
{
ports: [
{ someKeys: '', someOtherKeys: '' },
{ someKeys: '', someOtherKeys: '' },
{ someKeys: '', someOtherKeys: '' },
{ someKeys: '', someOtherKeys: '' },
{ someKeys: '', someOtherKeys: '' },
{ someKeys: '', someOtherKeys: '' },
{ someKeys: '', someOtherKeys: '' },
{ someKeys: '', someOtherKeys: '' },
{ someKeys: '', someOtherKeys: '' },
{ someKeys: '', someOtherKeys: '' }
]
}
您的代码中有一些错误
additionalStatus.ports[i]未定义
,因为您只是在循环中定义了i
,但没有给它赋值。这就是为什么i
未定义的原因
您的数据结构不正确。无法使用key:value
将对象直接配对到数组中-
现在的问题是你应该如何构造你的数据并循环使用它?你可以像我下面提到的那样遵循-
const additionalStatus = {
ports: [
{ someKeys: '', someOtherKeys: '' },
{ someKeys: '', someOtherKeys: '' }
]
}
for(let itemInArray of additionalStatus.ports) {
console.log(itemInArray.someKeys); // value of `someKeys`
console.log(itemInArray.someOtherKeys); // value of `someOtherKeys`
}
注意:
要在数组中循环:使用for of
在对象中循环:使用for in
错误是因为您没有为数组[i]指定任何值,它应该指定0,并且应该指定n
additionalStatus.ports.length - 1
另一方面,它会给您错误类型错误:additionalStatus。端口[i]未定义
*
检查这个
for(let i = 0; i < additionalStatus.ports.length - 1, i++ ) {
additionalStatus.ports[i].someKeys = "";
additionalStatus.ports[i].someOtherKeys = "";
}
for(设i=0;i
希望它能解决您的问题您描述的数据结构无效。从那里开始。我认为您的ports对象有问题。如果您想要对象数组,它应该是这样的:ports=[{1:{someKeys:,someOtherKeys::}]有点…我已经在这种情况下呆了几个小时才解决。现在我才意识到这是一个最愚蠢的问题。希望我能在几年后看到这个问题,而不是删除它…你知道这是鼓励回答你自己的问题,你不必假装是其他人!这是更少的代码,谢谢!但是,端口将从0索引开始,而不是从1@Fikry数组从索引0开始,现在就习惯它,并在必要时通过减去1进行转换。@EmileBergeron我知道……那么,我是否需要删除一个0索引,因为它是不必要的,还是每次我想调用它时都需要使用索引+1?@Fikry不必担心代码太少。只要定义它就行了一堆空条目。更容易读取原始数据。@Akshaydepgiri这就是重点…更容易读取,但更难维护。想象一下,如果有500个原始数据,您需要在每个数组中更新一些键。因为是的,在这种情况下,我需要将这些键循环500次。。。
const additionalStatus = {
ports: [
{ someKeys: '', someOtherKeys: '' },
{ someKeys: '', someOtherKeys: '' }
]
}
for(let itemInArray of additionalStatus.ports) {
console.log(itemInArray.someKeys); // value of `someKeys`
console.log(itemInArray.someOtherKeys); // value of `someOtherKeys`
}
additionalStatus.ports.length - 1
for(let i = 0; i < additionalStatus.ports.length - 1, i++ ) {
additionalStatus.ports[i].someKeys = "";
additionalStatus.ports[i].someOtherKeys = "";
}