如何随机播放 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)
好吧,我一直在做一些研究,我在 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)