首页 > 解决方案 > 如何通过迭代创建对象

问题描述

如果我想要超过 3 个对象怎么办?我可以以某种方式循环它吗?

let newArr = []

let newObj1 = {};  let newObj2 = {};  let newObj3 = {};

newArr.push(newObj1);
newArr.push(newObj2);
newArr.push(newObj3);

console.log(newArr);

如果我添加第三个循环,我的阵列会刹车,我该如何替换它?这是我的完整代码:

让 arr = [ {fullName:{surname:'xxx',firstName:'yyy',middleName:'zzz'}},{fullName:{surname:'XXX',firstName:'YYY',middleName:'ZZZ'} } ] let boolObj = {fullName : {surname : true, firstName : true, middleName: false}} let loc = {"fullName.surname" : "Прізвище", "fullName.middleName" : "По-батькові"}

让 newArr = [] newObj1 = {}; newObj2 = {}; newObj3 = {};

for (var i = 0; i < arr.length; i++) { 让 arrObjKeys = Object.keys(arr[i]); 让 arrObjObjKeys = Object.keys(Object.values(arr[i])[0]); 让 arrObjObjValues = Object.values(Object.values(arr[i])[0]); 让 boolObjValues = Object.values(Object.values(boolObj)[0]); 让 locObjKeys = Object.keys(loc); 让 boolObjStr1 = ${Object.keys(arr[i])}.${arrObjObjKeys[0]}; 让 boolObjStr3 = ${Object.keys(arr[i])}.${arrObjObjKeys[2]}; 让 ojbStr1 =value${i+1} if(boolObjStr1 === locObjKeys[0] && arrObjObjValues[0] !== '') { newObj1.name = loc[boolObjStr1]; newObj3.name = loc[boolObjStr3]; newObj2.name = arrObjObjKeys[1]; } for(let j = 0; j < 3; j++) { if(boolObjValues[0] === true) { newObj1[ojbStr1] = arr[i][arrObjKeys][arrObjObjKeys[j-2]]; } if(boolObjValues[1] === true) { newObj2[ojbStr1] = arr[i][arrObjKeys][arrObjObjKeys[j-1]]; } if(boolObjValues[2] === true) { newObj3[ojbStr1] = arr[i][arrObjKeys][arrObjObjKeys[j]]; } } } newArr.push(newObj1); newArr.push(newObj2); newArr.push(newObj3);

控制台.log(newArr);

将来我想在我的 arr 中添加对象,例如:

让 arr = [ {fullName : {surname : 'xxx', firstName : 'yyy', middleName: 'zzz', data : {xxx: 'Boom'}}} ]

在这些代码之后

newObj1 = {}; newObj2 = {}; newObj3 = {}; 变成不好的解决方案?

但是如果我遍历我的

newObj1 = {}; newObj2 = {}; newObj3 = {};

这将是 3 个循环,我的代码将被破坏。请告诉如何解决它?

标签: javascriptloops

解决方案


似乎是一个相当普遍/基本的问题,但为什么不尝试一个简单的 for 循环呢?

let  arr = [];

for (var x = 0; x < 100; x++) {
  const object = new Object();
  arr.push(object);
}

推荐阅读