首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于对象的值索引的JS变量不返回任何值

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

Stack Overflow用户
提问于 2020-05-20 23:05:08
回答 1查看 21关注 0票数 0

完全迷失了。

我想做的是得到下面这样的数组。

0:{运行:'sam‘。游泳:'ham'},

1:{跑:'tom',游:‘bill’},

2:{跑:'jim',游:'sam},

.

但是当我把代码放在这里时,obj[name1[o]] = name2[some(name2)];,特别是值部分,就不能工作了。

为什么我不能在这句话中使用一个变量作为对象的值的索引?

代码语言:javascript
复制
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);

EN

回答 1

Stack Overflow用户

发布于 2020-05-20 23:17:11

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

这些值与数组的reminder operator %和长度一起获取,以防止未定义的值。

代码语言:javascript
复制
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);
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61916449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档