Python 有一種簡潔的方式將帶有引數的函式分配給多個變數,以單行方式完成。我想知道 JavaScript 是否具有相同或相似的方法。
我發現了幾個描述 JavaScript 的多個變數賦值的示例,使用多個賦值和解構。這些方法的問題是它們可以或確實需要變數與值相等:
let a = b = c = some_value或let [a, b] = [x, y]。這是我對代碼的特定部分有問題的地方。
Python
#!/usr/bin/env python3
def numbers(arr):
if len(arr) <= 1:
return arr
left_half, right_half = divide(arr) # The code in question; Multi-variable assignment
return left_half, right_half
def divide(arr):
mid = len(arr) // 2
left = arr[:mid]
right = arr[mid:]
return left, right
l = [12, 45, 9, 2, 5]
print(numbers(l)) # ...([12, 45],[9, 2, 5])
JavaScript
function numbers(arr) {
if (arr.length <= 1) {
return arr;
}
let leftHalf, rightHalf = divide(arr); // The not-so-equivalent code
return leftHalf, rightHalf;
}
function divide(arr) {
let mid = Math.floor(arr.length / 2);
let left = arr.slice(0, mid);
let right = arr.slice(mid);
return left, right;
}
const l = [12, 45, 9, 2, 5];
console.log(numbers(l)); // ...[9, 2, 5]
如何在 JavaScript 代碼中實作與 Python 相同或相似的模式?
uj5u.com熱心網友回復:
在問題中,您宣告您不能使用解構。然而,解構,更準確地說是陣列解構系結模式正是在這里使用的正確工具,所以你真的應該使用它。(嗯,除了它是多余的,但稍后會更多。)
以下是您將如何將 Python 代碼(嗯,除了 ECMAScript 沒有元組這一事實) 1:1 轉換為 ECMAScript 的方法:
function numbers(arr) {
if (arr.length <= 1) {
return arr;
}
const [leftHalf, rightHalf] = divide(arr);
return [leftHalf, rightHalf];
}
function divide(arr) {
const mid = Math.floor(arr.length / 2);
const left = arr.slice(0, mid);
const right = arr.slice(mid);
return [left, right];
}
與 Python 代碼相比,ECMAScript 代碼的唯一區別在于,在 Python 代碼中,兩者都numbers回傳divide一個元組,而 ECMAScript 沒有元組,因此,在 ECMAScript 代碼中,它們回傳Arrays。
但是,請注意,在 Python 和 ECMAScript 版本中,都numbers對 的回傳值進行了解構divide,只是為了將其與完全相同的資料結構重新組合在一起,因此您可以擺脫大部分代碼:
function numbers(arr) {
if (arr.length <= 1) {
return arr;
}
return divide(arr);
}
def numbers(arr):
if len(arr) <= 1:
return arr
return divide(arr)
您還會注意到我const在 ECMAScript 代碼中將所有變數都更改為 s,因為您沒有修改它們的系結。
不過,這個 API 很奇怪且難以使用,因為該numbers函式根據引數陣列的長度回傳兩個完全不同的東西。它回傳一個數字陣列或一個數字陣列陣列(在 ECMAScript 中,在 Python 中,它回傳一個數字陣列元組)。這使得呼叫者更難使用,因為不同的回傳型別需要區別對待。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/453039.html
標籤:javascript Python 数组
