我正在嘗試創建一個可以接受陣列或值的函式,并將其加倍。我嘗試尋找一種方法來獲取陣列中的每個元素,然后將其乘以 2,但是在運行代碼時沒有得到所需的結果。
我覺得我在這里遺漏了一些簡單的東西,但是通過 stackoverflow 和 google 搜索并沒有幫助我解決這個問題。
預先感謝您的建議/幫助!
function double(value) {
if (Array.isArray(value)) {
value = value.map(function(element) {
return element * 2;
});
}
return value * 2;
}
// What the results should be, if it works:
double(2); // 4
double([1, 2, 3]); // [2, 4, 6]
uj5u.com熱心網友回復:
你只需要回傳值。
function double(value) {
if (Array.isArray(value)) {
return value.map(function(element) {
return element * 2;
});
}
return value * 2;
}
uj5u.com熱心網友回復:
return value * 2;將產生NaNifvalue是一個陣列。
您只想執行*ifvalue不是這樣的陣列:
function double(value) {
if (Array.isArray(value)) {
value = value.map(function(element) {
return element * 2;
});
} else {
value *= 2;
}
return value;
}
console.log(double(2)); // 4
console.log(double([1, 2, 3])); // [2, 4, 6]
所以總結一下:
- 如果我們正在處理一個陣列,
map()每個值* 2 - 否則,只
* 2在value - 回傳
value
我決定改變value以顯示問題,與@Munleashed 答案的唯一區別是他立即回傳值,我們可以使用如下箭頭函式進一步簡化它:
if (Array.isArray(value)) {
return value.map((v) => v * 2);
} else {
return value * 2;
}
那么,為什么不使用三元運算子更進一步:
function double(value) {
return (Array.isArray(value)) ? value.map((v) => v * 2) : (value * 2);
}
console.log(double(2)); // 4
console.log(double([1, 2, 3])); // [2, 4, 6]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/329330.html
標籤:javascript 数组 功能
上一篇:我正在嘗試撰寫一個函式,該函式采用n個整數引數并回傳所有引數的乘積
下一篇:空表頭
