Как перемешать два объекта в JavaScript, который имеет идентификатор и значение в нем - PullRequest
0 голосов
/ 11 октября 2019

Ну, я проводил некоторые исследования, у меня есть один объект в javascript, и я сделал его копию, я должен перетасовать оба объекта данных. Я не хочу, чтобы оба объекта располагались в одном и том же порядке.

Мне нужно перетасовать его.

Я перетасовал его по-разному, используя другой массив, содержащий только идентификатор, такой же идентификатор, как в testArraТаким образом, я сделал массив, который не имеет этих идентификаторов, но имеет идентификатор, который начинается с 0. Пожалуйста, помогите мне с этим.

метод, который я использовал, был: -

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: «Вы все», 31: «Я надеюсь», 34: «Хорошо», 30: «Привет всем», 32: «Вы все»

Ответы [ 3 ]

0 голосов
/ 11 октября 2019

Я вижу несколько проблем с этим кодом. Первая проблема заключается в том, что вы, похоже, перепутали массив и объект.

Объект - это, по сути, карта, на которой расположены данные. Он состоит из двух компонентов: ключей и атрибутов. Ваш 'testArray' является объектом и не будет вести себя как массив. Все ваши ключи - числа, и, как вы написали массив, он не скомпилируется. Вам нужно было бы превратить ваши ключи в строки var testArray = ({'30': 'hello everyone'}) или написать ключ, начинающийся с буквы. var testArray = ({thirty: 'hello everyone'})

Массив будет объявлен в квадратных скобках и будет выглядеть примерно так:

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

Массив - это просто список данных. У каждого элемента есть что-то, что называется индексом, который начинается с 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 голосов
/ 11 октября 2019

Прежде всего, это не массив, который является объектом. Если вы хотите сохранить объект, вы должны преобразовать его в массив

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)
0 голосов
/ 11 октября 2019

Я думаю, что вы могли бы сгенерировать случайный идентификатор и использовать его в качестве ссылки, вытащить объект из массива и отправить его в новый массив, который должен работать

...