如何在JavaScript中随机播放两个具有ID和值的对象

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

我正在对其进行一些研究,我在javascript中有一个对象,并且已经对其进行了复制,因此我必须将两个对象数据都洗牌。我不希望两个对象的顺序相同。

我需要洗牌。

我使用另一个数组,仅使用一个id,与testArray中的id相同,以不同的方式对其进行随机排序。这样,我制作了一个不具有这些id但从0开始的id的数组。请帮助我这个。

var testArray =({30:“大家好”31:“我希望”,32:你们33:“是”34:“好”,});var testArrayTwo = testArray;

它应该以任何方式洗牌。33:“你们所有人”,31:“我希望”,34:“美好”,30:“大家好”,32:“你们所有人”

javascript arrays object fabricjs shuffle
3个回答
0
投票

我认为您可以生成随机id并将其用作参考,以将对象从数组中拉出并推入新数组,这应该可以工作


0
投票

我看到此代码有几个问题。第一个问题是您似乎混淆了数组和对象。

对象本质上是数据所在位置的映射。它具有两个组成部分:键和属性。您的“ testArray”是一个对象,不会表现为数组。您的键全是数字,并且您编写数组的方式将无法编译。您需要将密钥设置为字符串var testArray = ({'30': 'hello everyone'}),或者需要写出以字母开头的密钥。 var testArray = ({thirty: 'hello everyone'})

一个数组将用方括号声明,将是这样的:

var myArray = ["hello everyone','i hope','you all','are','fine']

数组只是数据列表。每个元素都有一个称为in的索引,索引从0开始,并告诉我们元素在数组中的位置。在此示例中,“大家好”在索引0处。“我希望”在索引1处,“大家”在索引2处,依此类推。您可以使用数组的索引来返回所需的元素。如果我写出来

console.log(myArray[3]) //'are'

我将收到字符串'are',因为它是数组的第三个元素。我也可以使用这种技术来重新分配数组中的值。

myArray[4] = 'excellent'
console.log(myArray) // 'hello everyone','i hope','you all','are','doing','excellent'

对于您要执行的操作,听起来您应该使用辅助变量在数组索引之间交换值。示例:

let helperVar = myArray[2]
Array[2] = myArray[5]
myArray[5] = helperVar
console.log(myArray)
// 'hello everyone','i hope','fine','are','you all'

0
投票

首先,这不是一个对象数组。如果要保留对象,则必须将其转换为数组

var testArray = ({ 30 : 'hello everyone', 31 : 'i hope', 32 : 'you all', 33 : 'are', 34 : 'fine', });
var tempArray = Object.values(testArray)
var newArray = tempArray.sort(() => Math.random() - 0.5);
console.log(newArray)

如果要保留键,可以将对象更改为对象数组

var testArray = ([{ 30 : 'hello everyone'}, {31 : 'i hope'},{ 32 : 'you all'}, {33 : 'are'}, {34 : 'fine'}]);
var newArray = testArray.sort(() => Math.random() - 0.5);
console.log(newArray)
© www.soinside.com 2019 - 2024. All rights reserved.