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 = "";
    }