首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在JavaScript中使用for循环创建对象数组

在JavaScript中使用for循环创建对象数组
EN

Stack Overflow用户
提问于 2018-08-25 09:09:34
回答 2查看 138关注 0票数 0

我想使用另一个数组中的值通过 for 循环创建一个对象数组。

下面的代码片段生成5值,而不是6 (根据需要)

代码语言:javascript
复制
function generateArray() {
    var names = ["Fariz", "Falisha", "Mami", "Defina", "Fiska", "Papi"];
    var newObj = [];

    for (i = 0; i < names.length - 1; i++) {
        newObj[i] = {
            name: names[(Math.floor(Math.random() * (names.length)))],
            age: Math.floor(Math.random() * 40),
            communication: Math.floor(Math.random() * 20),
            skill: Math.floor(Math.random() * 20),
            experience: Math.floor(Math.random() * 20)
        }
    }

    return newObj;
}

console.log(generateArray());

如何生成与names 数组中的值一样多的值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-25 09:44:44

解决方案-将i < names.length - 1替换为i < names.length

for循环中执行代码块的条件错误。你的代码运行得很好,只是生成的结果比需要的少了1个。

MDN web docs介绍了for的工作原理。

代码语言:javascript
复制
function generateArray() {
    names = ["Fariz", "Falisha", "Mami", "Defina", "Fiska", "Papi"];
    newObj = [];

    for (i = 0; i < names.length; i++) {
        newObj[i] = {
            name: names[(Math.floor(Math.random() * (names.length)))],
            age: Math.floor(Math.random() * 40),
            communication: Math.floor(Math.random() * 20),
            skill: Math.floor(Math.random() * 20),
            experience: Math.floor(Math.random() * 20)
        }
    }

    return newObj;
}

console.log(generateArray());

票数 2
EN

Stack Overflow用户

发布于 2018-08-25 09:26:37

代码语言:javascript
复制
names = ["Fariz", "Falisha", "Mami", "Defina", "Fiska", "Papi"];

arob = [
    {
        name: names[(Math.floor(Math.random() * (names.length)))],
        age: Math.floor(Math.random() * 40),
        communication: Math.floor(Math.random() * 20),
        skill: Math.floor(Math.random() * 20),
        experience: Math.floor(Math.random() * 20)
    }, 
    {
        name: names[(Math.floor(Math.random() * (names.length)))],
        age: Math.floor(Math.random() * 40),
        communication: Math.floor(Math.random() * 20),
        skill: Math.floor(Math.random() * 20),
        experience: Math.floor(Math.random() * 20)
    }, 
    {
        name: names[(Math.floor(Math.random() * (names.length)))],
        age: Math.floor(Math.random() * 40),
        communication: Math.floor(Math.random() * 20),
        skill: Math.floor(Math.random() * 20),
        experience: Math.floor(Math.random() * 20)
    }, 
    {
        name: names[(Math.floor(Math.random() * (names.length)))],
        age: Math.floor(Math.random() * 40),
        communication: Math.floor(Math.random() * 20),
        skill: Math.floor(Math.random() * 20),
        experience: Math.floor(Math.random() * 20)
    }, 
    {
        name: names[(Math.floor(Math.random() * (names.length)))],
        age: Math.floor(Math.random() * 40),
        communication: Math.floor(Math.random() * 20),
        skill: Math.floor(Math.random() * 20),
        experience: Math.floor(Math.random() * 20)
    }, 
    {
        name: names[(Math.floor(Math.random() * (names.length)))],
        age: Math.floor(Math.random() * 40),
        communication: Math.floor(Math.random() * 20),
        skill: Math.floor(Math.random() * 20),
        experience: Math.floor(Math.random() * 20)
    }
];

在for循环中:i < names.length;,而不是i < names.length - 1;

代码语言:javascript
复制
function generateArray() {
    names = ["Fariz", "Falisha", "Mami", "Defina", "Fiska", "Papi"];
    newObj = [];

    for(i=0; i < names.length; i++) {
    newObj[i] = {
        name: names[(Math.floor(Math.random() * (names.length)))],
        age: Math.floor(Math.random() * 40),
        communication: Math.floor(Math.random() * 20),
        skill: Math.floor(Math.random() * 20),
        experience: Math.floor(Math.random() * 20) }
    }

    return newObj;
}

这将返回一个包含所有6个对象的数组。

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

https://stackoverflow.com/questions/52013273

复制
相关文章

相似问题

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