En utilisant javascript, existe-t-il un moyen rapide d'échanger 2 éléments dans un tableau?
Donc, s'il s'agissait d'un booléen, vous pourriez faire
setTrueOrFalse(!trueOrFalse); // would equal [false, true] <div onClick={() => setTrueOrFalse()} />Swap items in array</div>
mais disons que j'ai un array
// I want to swap the items in the array on a click const [trueOrFalse, setTrueOrFalse] = useState([true, false]);
et je veux les changer, y a-t-il un moyen rapide de permuter les éléments dans le tableau s'il y a deux éléments
const [isTrue, setIsTrue] = useState(false); setIsTrue(!isTrue);
5 Réponses :
Essayez
let a=[true, false]; // inverse values let b= a.map(x=>!x) // swap sequence (inplace) a.reverse(); console.log('inverse values', b); console.log('swap sequence', a);
Vous pouvez inverser le tableau, bien sûr, mais si vous avez toujours affaire à un tableau contenant 2 éléments, je pense que c'est plus simple.
Vous pouvez simplement utiliser la déstructuration avec la méthode de rappel de setter useState
// I want to swap the items in the array on a click const [trueOrFalse, setTrueOrFalse] = useState([true, false]); const swapState = () => { setTrueOrFalse(prevState => { const [val1, val2] = prevState; return [val2, val1]; }) } <div onClick={() => swapState()} />Swap items in array</div>
Vous pouvez utiliser reverse a > méthode de tableau
function reverse(a){
return a.reverse()
}
console.log(reverse([true, false]))
Vous pouvez essayer ceci
Array.prototype.swap = function(index1,index2){ [this[index1], this[index2]] = [this[index2],this[index1]] } let arr = [1,2,3,4]; arr.swap(1,2); console.log(arr);
Je ne comprends pas votre question ... Veuillez clarifier
Essayez-vous d'inverser la valeur de chaque élément du tableau? Si tel est le cas, c'est simplement
trueOfFalse.map (val =>! Val)
. Ou essayez-vous de prendre l'élément à l'index 0 et de le déplacer vers l'index 1, et vice versa?ai mis à jour ma question @messerbill est-ce plus clair maintenant?
@NicholasTower J'essaie de prendre l'élément à l'index 0 et de le déplacer vers l'index 1, et vice versa
Je pense que vous êtes censé utiliser
useEffect
, selon reactjs.org /docs/hooks-effect.html