我正在嘗試撰寫一個函式來檢查給定陣列中是否存在一個數字?我決定 tomcheck 的數字是“7”,即使它是數字的一部分,我也想得到它。例如,97 ......我是 javascript 的新手,如果有人能詳細解釋解決方案,我將不勝感激......我還附上了我的代碼示例。
function sevenBoom(arr){
debugger;
let singleElement;
let string;
let includeSeven;
for (let i=0; i<arr.length; i ){
singleElement = arr[i];
string = singleElement.toString();
includeSeven = string.includes("7");
}
if (includeSeven == true){
return "Boom!"
}else{
return "There is no 7 in the array";
}
}
arr = [1,2,4,5,6,7,8,9];
sevenBoom(arr);
uj5u.com熱心網友回復:
你可以簡單地使用arr.some(a => a.toString().includes(7));
some()效率會更高,因為它將在第一個匹配條件處停止,并且不會進一步檢查陣列中的其余值。使用.toString()轉換number為string,然后我們可以使用includes檢查該字串中是否存在值。下面提供了關于方法的進一步細節。
Array.prototype.some():該
some()方法測驗陣列中的至少一個元素是否通過了提供的函式實作的測驗。如果在陣列中找到所提供函式為其回傳 true 的元素,則回傳 true;否則回傳false。它不會修改陣列。String.prototype.includes():該
includes()方法執行區分大小寫的搜索,以確定是否可以在另一個字串中找到一個字串,回傳true或false酌情。Array.prototype.includes():該
includes()方法確定陣列是否在其條目中包含某個值,回傳true或false酌情。
在下面試試。
let arr = [1,2,4,5,6,7,8,9];
let result = arr.some(a => a.toString().includes(7));
console.log(result);
let arr2 = [1,97];
let result2 = arr2.some(a => a.toString().includes(7));
console.log(result2);
let arr3 = [1,6];
let result3 = arr3.some(a => a.toString().includes(7));
console.log(result3)
uj5u.com熱心網友回復:
每當找到七個時,您都需要跳出回圈。
function sevenBoom(arr) {
let singleElement;
let string;
let includeSeven;
for (let i = 0; i < arr.length; i ) {
singleElement = arr[i];
if (singleElement === 7) {
includeSeven = true;
break;
}
}
if (includeSeven === true) {
return 'Boom!';
} else {
return 'There is no 7 in the array';
}
}
const arr1 = [1, 2, 4, 5, 6, 7, 8, 9];
console.log(sevenBoom(arr1));
簡單的方法:
// Easy Solution
const arr = [1, 2, 4, 5, 6, 7, 8, 9];
const set = new Set(arr);
if (set.has(7)) {
console.log('BOOM');
} else {
console.log('There is no 7 in the array');
}
uj5u.com熱心網友回復:
有多種解決方案可行。我正在討論一種非常容易理解的方法。
function sevenBoom(arr) {
// Initial array: [1, 2, 4, 5, 6, 7, 8, 9]
// "map" will convert the number array to string array
// Array after map: ["1", "2", "4", "5", "6", "7", "8", "9"]
// "join" will join all the string numbers
// Joined string: "12456789"
// "includes" will check if "7" is in the joined string
const hasSeven = arr.map(n => `n`).join("").includes("7");
return hasSeven ? "Boom!" : "There is no 7 in the array";
};
sevenBoom([1,2,4,5,6,7,8,9]);
uj5u.com熱心網友回復:
如果輸入陣列由實陣列成,請將它們轉換為字串,因為從 1083.703 中得到 7 涉及數學,但從“1053.703”中得到“7”很容易。用于.filter()遍歷陣列并.includes()作為回呼。
const seven = [0, 100.7, 8, 9, 55, -63, 7, 99, -57];
function findChar(char, array) {
return array.filter(num => num.toString().includes(char));
}
console.log(findChar('7', seven));
uj5u.com熱心網友回復:
您的代碼的問題是,當您發現出現 7 個時,您必須退出 for 回圈執行,否則它將迭代整個陣列并且您的變數includeSeven將僅保存最后一個比較結果。
在這里,您的回圈將針對陣列中的每個元素運行arr。當回圈執行7陣列中的元素時,它將設定includeSeven為true。但是回圈進一步執行并評估其余元素8和9. 因此includeSeven將保留上次執行的結果。因此,當您找到匹配項時,您應該退出回圈。
作業小提琴
function sevenBoom(arr) {
let singleElement;
let string;
let includeSeven;
for (let i = 0; i < arr.length; i ) {
singleElement = arr[i];
string = singleElement.toString();
includeSeven = string.includes("7");
if (includeSeven) {
i = arr.length; // Implementation of break
}
}
if (includeSeven == true) {
return "Boom!"
} else {
return "There is no 7 in the array";
}
}
arr = [1, 2, 4, 5, 6, 7, 8, 9];
console.log(sevenBoom(arr));
或者
簡單的單行函式,用于檢查陣列中是否有任何元素在元素中的某處使用和7作為數字。Array.someString.includes
這里Array.some將檢查陣列中是否至少有一個元素符合我們指定的條件。String.includesorr 字串是否包含特定元素。所以我們檢查陣列中的任何一個元素都有一個字串 7
作業小提琴
sevenBoom = (arr) => arr.some((item) => item.toString().includes("7")) ? "Boom!" : "There is no 7 in the array";
arr = [1, 2, 4, 5, 6, 7, 8, 9];
console.log(sevenBoom(arr));
uj5u.com熱心網友回復:
Easy-peasy,有代碼:
function sevenBoom(arr) {
if(arr.join().includes(7)||arr.join().includes('7')) return 'Boom!'
else return 'No 7 in array :('
}
sevenBoom([1,2,4,5,6,7,8,9])
我使用了 ES6 語法,所以你可以很容易地理解一切是如何作業的 :)
MDN 鏈接:
Array.prototype.join
String.prototype.includes
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/460030.html
標籤:javascript
上一篇:運行console.log("Helloworld")時VSCode回傳退出代碼1時出錯;在javascript中
