如何随机播放 javascript 中的两个对象,其中有一个 Id 和一个值

How to Shuffle two Objects in javascript which has an Id and value in it

好吧,我一直在做一些研究,我在 javascript 中有一个对象,我已经制作了它的副本,我必须洗牌这两个对象数据。我不希望两个对象的顺序相同。

我需要洗牌。

我使用另一个只有 id 的数组以不同的方式对其进行了洗牌,其中的 id 与 testArra 中的 id 相同,这样我创建了一个没有这些 id 但具有从 0 开始的 id 的数组。 请帮我解决一下这个。

我使用的方法是:-

var testIndexshuffleData = testShuffle(indexNumberOne);
function testShuffle(arra1){
    for (var i = 0; i < arra1.length - 1; i++) {
        var j = i + Math.floor(Math.random() * (arra1.length - i));

        var temp = arra1[j];
        arra1[j] = arra1[i];
        arra1[i] = temp;
    }
    return arra1;
}

var newArray = shuffleArraytest(testArray,testIndexshuffleData);
function shuffleArraytest(arrayOneName,arrayTwoIndex){
    var newTextArray = [];
        var arrayTwoIndexLength = arraytwoIndex.length;
        console.info("length of an array : "+arrayTwoIndexLength);
        for(let i = 0; i < arrayTwoIndexLength;i++){
            var indexSave = arraytwoIndex[i];   
            var arrayOneNameSingleIndex = arrayOneName[indexSave];
            newTextArray.push(arrayOneNameSingleIndex);

        }

    return newTextArray;
}

var testArray = ({
        30 : 'hello everyone',
        31 : 'i hope',
        32 : 'you all,
        33 : 'are',
        34 : 'fine',
    });
var testArrayTwo = testArray;

它应该以任何方式随机播放。 33:'you all',31:'i hope',34:'fine',30:'hello everyone',32:'you all'

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

我发现这段代码有几个问题。第一个问题是您似乎混淆了数组和对象。

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

一个数组将用方括号声明,就像这样:

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

数组只是一个数据列表。每个元素都有一个叫做 in index 的东西,它从 0 开始,告诉我们元素在数组中的位置。在此示例中,'hello everyone' 位于索引 0。'i hope' 位于索引 1,'you all' 位于索引 2,等等。您可以使用数组的索引来 return你想要的元素。如果我写出

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)