I have data like this :
const cards = [
{ name: "angular2" },
{ name: "vue" },
{ name: "react" },
{ name: "grunt" },
{ name: "phantomjs" }
];
I want to duplicate and shuffle this array. Also i want to add id property to each item.
const duplicateCards = (arr) => {
const duplicatedArr = [...arr, ...arr];
for (let i = duplicatedArr.length - 1; i >= 0; i--) {
duplicatedArr[i].id = i;
randomIndex = Math.floor(Math.random() * i + 1);
console.log(duplicatedArr[i]);
[duplicatedArr[i], duplicatedArr[randomIndex]] = [duplicatedArr[randomIndex], duplicatedArr[i]];
}
return duplicatedArr;
};
The duplicateCards(cards) function returns an output like this:
[
{ name: 'vue', id: 1 },
{ name: 'angular2', id: 0 },
{ name: 'vue', id: 1 },
{ name: 'grunt', id: 7 },
{ name: 'phantomjs', id: 4 },
{ name: 'phantomjs', id: 4 },
{ name: 'grunt', id: 7 },
{ name: 'react' },
{ name: 'react' },
{ name: 'angular2', id: 0 }
]
I tried concat() method but I got same result. I want to add a unique id. What is my mistake ? How can I solve this?
[...arr, ...arr]this code doesn't clone your item twice, so you cannot clone like this in this case,randomIndex.{name:"react",id:1}