gpt4 book ai didi

javascript - 将随机对象推送到数组上

转载 作者:行者123 更新时间:2023-11-28 14:35:09 24 4
gpt4 key购买 nike

我需要随机排列数组上的对象来“进行战斗”。随机效果很完美,但有时会重复对象。另外,我可以看到我的 var ARR 充满了未定义。我不明白我需要如何在没有重复对象的情况下完美随机并填充随机对象。

var avenger = [
{id: 1, fullName: "Steve Rogers", avengerName: "Captain America", gender: "Male", city: "New York City", markAv: 10},
{id: 2, fullName: "Tony Stark", avengerName: "IronMan", gender: "Male", city: "New York City", markAv: 15},
{id: 3, fullName: "Thor Odinson", avengerName: "Thor", gender: "Male", city: "Los Angeles", markAv: 13},
{id: 4, fullName: "Bruce Banner", avengerName: "Hulk", gender: "Male", city: "Maryland", markAv: 20},
{id: 5, fullName: "Clint Barton", avengerName: "Hawkeye", gender: "Male", city: "Los Angeles", markAv: 8},
{id: 6, fullName: "Natasha Romanoff", avengerName: "Black Widow", gender: "Female", city: "Paris", markAv: 14},
{id: 7, fullName: "Nick Fury", avengerName: "Nick Fury", gender: "Female", city: "New York City", markAv: 5},
{id: 8, fullName: "Jaume Serradell", avengerName: "Jaumeserr", gender: "Male", city: "Barcelona", markAv: 18}
]

function avengerPairs(myObject) {

var arr = [];

for (var i=0; i<avenger.length; i++) {

var randomAvenger = avenger[Math.floor(Math.random() * avenger.length)];

if (randomAvenger[i] !== avenger[i]) {
arr.push([randomAvenger, avenger[i+1]]);
i++;
}
}

console.log(arr);

for (var i=0; i<arr.length; i++) {

console.log(Math.max(arr[i][0].markAv, arr[i][1].markAv));

if (arr[i][0].markAv < arr[i][1].markAv) {
console.log(arr[i][0].fullName + " vs " + arr[i][1].fullName + " => " + arr[i][1].fullName + " is better!");
} else if (arr[i][0].markAv === arr[i][1].markAv) {
console.log(arr[i][0].fullName + " vs " + arr[i][1].fullName + " => Are equals!");
} else {
console.log(arr[i][0].fullName + " vs " + arr[i][1].fullName + " => " + arr[i][0].fullName + " is better!");
}
}
}

avengerPairs(avenger);

最佳答案

由于这些行,您的数组正在填充 undefined:

var arr = [];

for (var i=0; i<avenger.length; i++) {

var random = avenger[Math.floor(Math.random() * avenger.length)];

console.log(random);
arr.push([random[i], random[i+1]]);
i++;
}

random 成功创建一个随机索引来查找 avenger 数组,并将数组中的相应值分配给变量 random

您应该在以下 console.log 中成功看到此操作。

下一行会给你带来麻烦。在推送调用中,您尝试使用 random[i]random[i + 1] 访问 random 变量上的两个索引。这会返回 undefined,因为您的 random 变量不是 avengers 数组,而是单个 avenger,并且该对象上不存在整数键,因此返回 未定义

我会为您的随机变量推荐一个更好的名称。也许是randomAvenger?这将有助于清楚地表明您错误地索引到了 avenger,而不是 avenger 数组。

要成功配对两个 avengers,您需要在 avengers 数组中添加两个单独的随机索引。不过,您还需要注意不要两次选择同一个复仇者!

关于javascript - 将随机对象推送到数组上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50031804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com