用于对象值索引的JS变量不返回任何值

问题描述 投票:0回答:1

总计丢失。

我想做的就是获得下面的数组。

0:{run:'sam'。游泳:“火腿”},

1:{运行:'tom',游泳:'bill'},

2:{运行:'jim',游泳:'sam},

......

但是当我将代码放在这里时,obj[name1[o]] = name2[some(name2)];,尤其是值部分,不起作用。

为什么我不能在此句子中使用变量作为对象值的索引?

const arr = [];
const obj = {}

var name1 = ['run','swim'];
var name2 = ['sam','ham','tom','bill','jim'];

function some(a){
  for(var n = 0; n < a.length; n++){
  n  //simplified calculating
  }  
}

for(var a = 0; a<3; a++){
  arr[a] = obj;
  for(var o=0; o<2; o++){
  obj[name1[o]] = name2[some(name2)];
  }
}


console.log(arr);
javascript object key-value
1个回答
1
投票

您可以使用所有名称和所有键,并可以计算出迭代的长度。

该值与reminder operator %和数组的长度一起使用,以防止出现未定义的值。

%
var keys = ['run', 'swim'],
    names = ['sam', 'ham', 'tom', 'bill', 'jim'],
    result = [],
    length = Math.ceil(names.length / keys.length) * keys.length;

for (let i = 0; i < length; i++) {
    let j = Math.floor(i / keys.length);
    if (!result[j]) result[j] = {};
    result[j][keys[i % keys.length]] = names[i % names.length];
}

console.log(result);
© www.soinside.com 2019 - 2024. All rights reserved.