我有兩個陣列,如果該值尚未包含在 Array2 中,我想從 Array1 中獲取一個隨機的新值。
const array1 = ["Banana", "Orange", "Apple", "Mango"];
const array2 = ["Banana", "Mango"];
const randomElement = array1[Math.floor(Math.random() * array.length)];
我已經有一個名為 randomElement 的現有變數,它在陣列 1 中找到一個隨機元素,但它不查看該元素是否已經存在于陣列 2 中。
理想情況下,變數 randomElement 當前應該只輸出“Orange”或“Apple”,因為它們是 Array 2 中缺少的。我如何最簡單地完成這項任務?
uj5u.com熱心網友回復:
您需要先計算包含元素array1但不包含元素的陣列array2,您可以使用Array#filterand來執行此操作Array#includes:
const array1 = ["Banana", "Orange", "Apple", "Mango"];
const array2 = ["Banana", "Mango"];
const array = array1.filter(e => !array2.includes(e));
const randomElement = array[Math.floor(Math.random() * array.length)];
console.log(randomElement);
uj5u.com熱心網友回復:
您可以計算兩個集合之間的差集(array1 中但未包含在 array2 中的元素)并使用它來選擇下一個元素:
const diff = array1.filter((v) => !array1.includes(v));
const randomElement = diff[Math.floor(Math.random() * array.length)];
console.log(randomElement);
uj5u.com熱心網友回復:
您當前的實作只是顯示陣列中的一個隨機值。解決此問題的一種方法是將其包裝在回圈中。繼續獲取值,直到找到不在array2. 這可能會永遠持續下去(在最壞的情況下)。
在另一種方法中:
您將需要第三個陣列,它將是您的array1. 運行所有操作,你應該很好。
const array1 = ["Banana", "Orange", "Apple", "Mango"];
const array2 = ["Banana", "Mango"];
const filteredArr = array1.filter(x => !array2.includes(x));
const randomElement = filteredArr[Math.floor(Math.random() * filteredArr.length)];
console.log(randomElement);
使用的方法:filter()- 根據條件過濾陣列元素。
includes()- 檢查一個值是否存在于陣列中
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/425105.html
標籤:javascript 数组 随机的
下一篇:從字串中取出部分,如何?
