我正在对其进行一些研究,我在javascript中有一个对象,并且已经对其进行了复制,因此我必须将两个对象数据都洗牌。我不希望两个对象的顺序相同。
我需要洗牌。
我使用另一个数组,仅使用一个id,与testArray中的id相同,以不同的方式对其进行随机排序。这样,我制作了一个不具有这些id但从0开始的id的数组。请帮助我这个。
var testArray =({30:“大家好”31:“我希望”,32:你们33:“是”34:“好”,});var testArrayTwo = testArray;
它应该以任何方式洗牌。33:“你们所有人”,31:“我希望”,34:“美好”,30:“大家好”,32:“你们所有人”
我认为您可以生成随机id并将其用作参考,以将对象从数组中拉出并推入新数组,这应该可以工作
我看到此代码有几个问题。第一个问题是您似乎混淆了数组和对象。
对象本质上是数据所在位置的映射。它具有两个组成部分:键和属性。您的“ 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'
首先,这不是一个对象数组。如果要保留对象,则必须将其转换为数组
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)