Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

Đã hỏi 12 năm, 5 tháng trước 12 years, 5 months ago

Đã xem 1,1 triệu lần 1.1m times

Tôi đang cố gắng trả về hai giá trị trong JavaScript. Điều này có thể?JavaScript. Is this possible?

var newCodes = function() {  
    var dCodes = fg.codecsCodes.rs;
    var dCodes2 = fg.codecsCodes2.rs;
    return dCodes, dCodes2;
};

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

Khi được hỏi ngày 26 tháng 5 năm 2010 lúc 22:06May 26, 2010 at 22:06

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

Asim Zaidiasim ZaidiAsim Zaidi

26K48 Huy hiệu vàng130 Huy hiệu bạc219 Huy hiệu Đồng48 gold badges130 silver badges219 bronze badges

5

Không, nhưng bạn có thể trả về một mảng chứa các giá trị của bạn:

function getValues() {
    return [getFirstValue(), getSecondValue()];
}

Sau đó, bạn có thể truy cập chúng như vậy:

var values = getValues();
var first = values[0];
var second = values[1];

Với cú pháp Ecmascript 6 mới nhất*, bạn cũng có thể phá hủy giá trị trả về trực quan hơn:

const [first, second] = getValues();

Nếu bạn muốn đặt "nhãn" trên mỗi giá trị được trả về (dễ bảo trì hơn), bạn có thể trả về một đối tượng:

function getValues() {
    return {
        first: getFirstValue(),
        second: getSecondValue(),
    };
}

Và để truy cập chúng:

var values = getValues();
var first = values.first;
var second = values.second;

Hoặc với cú pháp ES6:

const {first, second} = getValues();

* Xem bảng này để biết khả năng tương thích trình duyệt. Về cơ bản, tất cả các trình duyệt hiện đại ngoài IE hỗ trợ cú pháp này, nhưng bạn có thể biên dịch mã ES6 xuống JavaScript tương thích IE tại thời điểm xây dựng với các công cụ như Babel.

User229044 ♦

227K40 Huy hiệu vàng327 Huy hiệu bạc335 Huy hiệu Đồng40 gold badges327 silver badges335 bronze badges

Đã trả lời ngày 26 tháng 5 năm 2010 lúc 22:09May 26, 2010 at 22:09

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

Sasha Chedygovsasha ChedygovSasha Chedygov

125K26 Huy hiệu vàng101 Huy hiệu bạc115 Huy hiệu đồng26 gold badges101 silver badges115 bronze badges

5

Bạn có thể làm điều này từ Ecmascript 6 trở đi bằng các mảng và "bài tập phá hủy". Lưu ý rằng chúng không có sẵn trong các phiên bản JavaScript cũ hơn (có nghĩa là - không phải với ECMAScript thứ 3 và phiên bản thứ 5).

Nó cho phép bạn gán cho 1+ biến đồng thời:

var [x, y] = [1, 2];
x; // 1
y; // 2

// or

[x, y] = (function(){ return [3, 4]; })();
x; // 3
y; // 4

Bạn cũng có thể sử dụng phá hủy đối tượng kết hợp với giá trị tài sản để đặt tên cho các giá trị trả về trong một đối tượng và chọn ra các giá trị bạn muốn:

let {baz, foo} = (function(){ return {foo: 3, bar: 500, baz: 40} })();
baz; // 40
foo; // 3

Và nhân tiện, đừng bị lừa bởi thực tế là Ecmascript cho phép bạn

const [first, second] = getValues();
7. Những gì thực sự xảy ra không có những gì có vẻ. Một biểu thức trong tuyên bố trả lại -
const [first, second] = getValues();
8 - không là gì ngoài một nhà điều hành dấu phẩy được áp dụng cho các chữ số (
const [first, second] = getValues();
9,
function getValues() {
    return {
        first: getFirstValue(),
        second: getSecondValue(),
    };
}
0 và
function getValues() {
    return {
        first: getFirstValue(),
        second: getSecondValue(),
    };
}
1) tuần tự, cuối cùng đánh giá theo giá trị của biểu thức cuối cùng của nó -
function getValues() {
    return {
        first: getFirstValue(),
        second: getSecondValue(),
    };
}
1. Đó là lý do tại sao
function getValues() {
    return {
        first: getFirstValue(),
        second: getSecondValue(),
    };
}
3 có chức năng giống hệt với không có gì khác ngoài
function getValues() {
    return {
        first: getFirstValue(),
        second: getSecondValue(),
    };
}
4.

return 1, 2, 3;
// becomes
return 2, 3;
// becomes
return 3;

Fzs

15.5K12 Huy hiệu vàng41 Huy hiệu bạc47 Huy hiệu đồng12 gold badges41 silver badges47 bronze badges

Đã trả lời ngày 26 tháng 5 năm 2010 lúc 23:09May 26, 2010 at 23:09

5

Chỉ cần trả lại một đối tượng theo nghĩa đen

function getValues() {
    return [getFirstValue(), getSecondValue()];
}
0

Đã trả lời ngày 26 tháng 5 năm 2010 lúc 22:11May 26, 2010 at 22:11

Sean Kinsean KinseySean Kinsey

37.2K7 Huy hiệu vàng51 Huy hiệu bạc71 Huy hiệu đồng7 gold badges51 silver badges71 bronze badges

2

Vì es6 bạn có thể làm điều này

function getValues() {
    return [getFirstValue(), getSecondValue()];
}
1

Biểu thức trả về

function getValues() {
    return {
        first: getFirstValue(),
        second: getSecondValue(),
    };
}
5 là tốc ký giá trị thuộc tính và tương đương với
function getValues() {
    return {
        first: getFirstValue(),
        second: getSecondValue(),
    };
}
6 này.property value shorthand and is equivalent to this
function getValues() {
    return {
        first: getFirstValue(),
        second: getSecondValue(),
    };
}
6.

Nhiệm vụ này trên dòng cuối cùng được gọi là phân công phá hủy đối tượng. Nó trích xuất giá trị thuộc tính của một đối tượng và gán nó cho biến cùng tên. Nếu bạn muốn gán các giá trị trả về cho các biến của tên khác nhau, bạn có thể làm như thế này

function getValues() {
    return {
        first: getFirstValue(),
        second: getSecondValue(),
    };
}
7object destructing assignment. It extracts property value of an object and assigns it to variable of same name. If you'd like to assign return values to variables of different name you could do it like this
function getValues() {
    return {
        first: getFirstValue(),
        second: getSecondValue(),
    };
}
7

Đã trả lời ngày 1 tháng 3 năm 2018 lúc 13:59Mar 1, 2018 at 13:59

PeraceKperacekPeracek

1.65114 Huy hiệu bạc17 Huy hiệu đồng14 silver badges17 bronze badges

Ecmascript 6 bao gồm "các nhiệm vụ phá hủy" (như Kangax đã đề cập) vì vậy trong tất cả các trình duyệt (không chỉ Firefox), bạn sẽ có thể nắm bắt được một loạt các giá trị mà không phải tạo một mảng hoặc đối tượng được đặt tên cho mục đích duy nhất là nắm bắt chúng.

function getValues() {
    return [getFirstValue(), getSecondValue()];
}
2

Bạn có thể dùng thử trong Firefox rồi!

Đã trả lời ngày 10 tháng 12 năm 2013 lúc 6:51Dec 10, 2013 at 6:51

user3015682user3015682user3015682

1.18711 Huy hiệu bạc13 Huy hiệu đồng11 silver badges13 bronze badges

0

Một giá trị khác để đề cập đến cú pháp mới được giới thiệu (ES6) là sử dụng tốc ký tạo đối tượng ngoài việc chuyển nhượng phá hủy.

function getValues() {
    return [getFirstValue(), getSecondValue()];
}
3

Cú pháp này có thể được hoàn thành bằng babel hoặc các polyfiller JS khác cho các trình duyệt cũ hơn nhưng may mắn hiện nay hoạt động tự nhiên với các phiên bản gần đây của Chrome và Firefox.

Nhưng khi tạo ra một đối tượng mới, phân bổ bộ nhớ (và tải GC cuối cùng) có liên quan ở đây, đừng mong đợi nhiều hiệu suất từ ​​nó. JavaScript không phải là ngôn ngữ tốt nhất để phát triển những thứ tối ưu cao nhưng nếu điều đó là cần thiết, bạn có thể xem xét đưa kết quả của mình lên đối tượng xung quanh hoặc các kỹ thuật như vậy thường là các thủ thuật hiệu suất phổ biến giữa JavaScript, Java và các ngôn ngữ khác.

Đã trả lời ngày 1 tháng 10 năm 2016 lúc 7:12Oct 1, 2016 at 7:12

Ebrahim Byagowiebrahim ByagowiEbrahim Byagowi

9.6284 Huy hiệu vàng67 Huy hiệu bạc77 Huy hiệu đồng4 gold badges67 silver badges77 bronze badges

2

function getValues() {
    return [getFirstValue(), getSecondValue()];
}
4

Sau đó sử dụng

function getValues() {
    return [getFirstValue(), getSecondValue()];
}
5

Trong phiên bản mới:

function getValues() {
    return [getFirstValue(), getSecondValue()];
}
6

Đã trả lời ngày 8 tháng 9 năm 2014 lúc 8:38Sep 8, 2014 at 8:38

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

BehnambehnamBehnam

6,00438 Huy hiệu bạc35 Huy hiệu Đồng38 silver badges35 bronze badges

3

Một cách rất phổ biến để trả về nhiều giá trị trong JavaScript là sử dụng một nghĩa đen đối tượng, vì vậy một cái gì đó như:return multiple values in javascript is using an object literals, so something like:

function getValues() {
    return [getFirstValue(), getSecondValue()];
}
7

và nhận được các giá trị như thế này:

function getValues() {
    return [getFirstValue(), getSecondValue()];
}
8

hoặc thậm chí là một cách ngắn hơn:

function getValues() {
    return [getFirstValue(), getSecondValue()];
}
9

và lấy chúng cá nhân như:

var values = getValues();
var first = values[0];
var second = values[1];
0

Đã trả lời ngày 15 tháng 8 năm 2019 lúc 15:32Aug 15, 2019 at 15:32

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

AlirezaalirezaAlireza

96.6K26 Huy hiệu vàng265 Huy hiệu bạc169 Huy hiệu đồng26 gold badges265 silver badges169 bronze badges

Khác với việc trả lại một mảng hoặc một đối tượng như những người khác đã đề xuất, bạn cũng có thể sử dụng hàm thu thập (tương tự như được tìm thấy trong sơ đồ nhỏ):

var values = getValues();
var first = values[0];
var second = values[1];
1

Tôi đã thực hiện một bài kiểm tra JSPERF để xem một trong ba phương pháp nào nhanh hơn. Mảng là nhanh nhất và người thu gom chậm nhất.

http://jsperf.com/returning-multiple-values-2

Đã trả lời ngày 24 tháng 8 năm 2014 lúc 17:15Aug 24, 2014 at 17:15

ZelenovazelenovaZelenova

2663 Huy hiệu bạc7 Huy hiệu đồng3 silver badges7 bronze badges

1

Trong JS, chúng ta có thể dễ dàng trả lại một tuple bằng một mảng hoặc đối tượng, nhưng đừng quên! => JS là ngôn ngữ định hướng

function getValues() {
    return {
        first: getFirstValue(),
        second: getSecondValue(),
    };
}
8 và có một bí mật nhỏ ở đây để "trả lại nhiều giá trị" mà chưa có ai đề cập, hãy thử điều này:

var newCodes = function() {  
    var dCodes = fg.codecsCodes.rs;
    var dCodes2 = fg.codecsCodes2.rs;
    return dCodes, dCodes2;
};

trở thành

var values = getValues();
var first = values[0];
var second = values[1];
3

:)

Bam! Đây chỉ đơn giản là một cách khác để giải quyết vấn đề của bạn.

Đã trả lời ngày 27 tháng 1 năm 2017 lúc 5:08Jan 27, 2017 at 5:08

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

Alexander Millsalexander MillsAlexander Mills

83.5K123 Huy hiệu vàng436 Huy hiệu bạc770 Huy hiệu đồng123 gold badges436 silver badges770 bronze badges

Bạn cũng có thể làm:

var values = getValues();
var first = values[0];
var second = values[1];
4

Đã trả lời ngày 5 tháng 6 năm 2016 lúc 17:37Jun 5, 2016 at 17:37

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

Joris Mansjoris MansJoris Mans

5,8696 Huy hiệu vàng40 Huy hiệu bạc64 Huy hiệu đồng6 gold badges40 silver badges64 bronze badges

0

Thêm các phần quan trọng còn thiếu để làm cho câu hỏi này trở thành một nguồn tài nguyên hoàn chỉnh, vì điều này xuất hiện trong kết quả tìm kiếm.

Đối tượng phá hủy

Trong phá hủy đối tượng, bạn không nhất thiết phải sử dụng cùng một giá trị khóa với tên biến của mình, bạn có thể gán một tên biến khác bằng cách xác định nó như dưới đây:

var values = getValues();
var first = values[0];
var second = values[1];
5

Mảng phá hủy

Trong phá hủy mảng, bạn có thể bỏ qua các giá trị bạn không cần.

var values = getValues();
var first = values[0];
var second = values[1];
6

Điều đáng chú ý là

function getValues() {
    return {
        first: getFirstValue(),
        second: getSecondValue(),
    };
}
9 phải luôn luôn ở cuối vì nó không có ý nghĩa gì khi phá hủy bất cứ điều gì sau khi mọi thứ khác được tổng hợp thành
var values = getValues();
var first = values.first;
var second = values.second;
0.

Tôi hy vọng điều này sẽ thêm một số giá trị cho câu hỏi này :)

Đã trả lời ngày 25 tháng 6 năm 2019 lúc 6:16Jun 25, 2019 at 6:16

Nimeshka Srimalnimeshka SrimalNimeshka Srimal

7.3445 Huy hiệu vàng43 Huy hiệu bạc56 Huy hiệu Đồng5 gold badges43 silver badges56 bronze badges

Bạn có thể sử dụng "đối tượng"

var values = getValues();
var first = values[0];
var second = values[1];
7

Đã trả lời ngày 27 tháng 10 năm 2017 lúc 16:44Oct 27, 2017 at 16:44

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

bã nhờnsebu

2.6541 Huy hiệu vàng25 Huy hiệu bạc42 Huy hiệu đồng1 gold badge25 silver badges42 bronze badges

1

Tất cả đều đúng.

var values = getValues();
var first = values.first;
var second = values.second;
1 Các quy trình logic từ trái sang phải và trả về giá trị cuối cùng.

var values = getValues();
var first = values[0];
var second = values[1];
8

Đã trả lời ngày 21 tháng 12 năm 2017 lúc 8:13Dec 21, 2017 at 8:13

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

1

Tôi sẽ đề nghị sử dụng nhiệm vụ phá hủy mới nhất (nhưng đảm bảo nó được hỗ trợ trong môi trường của bạn)destructuring assignment (But make sure it's supported in your environment)

var values = getValues();
var first = values[0];
var second = values[1];
9

Đã trả lời ngày 19 tháng 7 năm 2018 lúc 7:23Jul 19, 2018 at 7:23

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

AmtourkyamtourkyAMTourky

1.18013 Huy hiệu bạc25 Huy hiệu đồng13 silver badges25 bronze badges

Tôi biết hai cách để làm điều này: 1. Trả về Array 2. Trả về đối tượng

Đây là một ví dụ tôi tìm thấy:

const [first, second] = getValues();
0

Đã trả lời ngày 4 tháng 4 năm 2019 lúc 14:01Apr 4, 2019 at 14:01

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

Kallol Medhikallol MedhiKallol Medhi

3751 Huy hiệu vàng3 Huy hiệu bạc15 Huy hiệu đồng1 gold badge3 silver badges15 bronze badges

Vài ngày trước, tôi có yêu cầu tương tự để nhận được nhiều giá trị trả về từ một hàm mà tôi đã tạo.

Từ nhiều giá trị trả về, tôi cần nó chỉ trả về giá trị cụ thể cho một điều kiện nhất định và sau đó giá trị trả về khác tương ứng với điều kiện khác.


Đây là ví dụ về cách tôi đã làm điều đó:

Function:

const [first, second] = getValues();
1

Nhận được giá trị trả về yêu cầu từ đối tượng được trả về bởi chức năng:

const [first, second] = getValues();
2

Toàn bộ quan điểm của việc trả lời câu hỏi này là chia sẻ phương pháp này để có được ngày ở định dạng tốt. Hy vọng nó đã giúp bạn :)

Đã trả lời ngày 16 tháng 7 năm 2018 lúc 10:53Jul 16, 2018 at 10:53

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

Krupesh Anadkatkrupesh Anadkatkrupesh Anadkat

1.6121 Huy hiệu vàng17 Huy hiệu bạc28 Huy hiệu đồng1 gold badge17 silver badges28 bronze badges

Tôi không có gì thêm mới ở đây nhưng một cách khác.

const [first, second] = getValues();
3

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

Nick

134K22 Huy hiệu vàng51 Huy hiệu bạc89 Huy hiệu đồng22 gold badges51 silver badges89 bronze badges

Đã trả lời ngày 20 tháng 12 năm 2018 lúc 5:25Dec 20, 2018 at 5:25

Kumarkumarkumar

Phù hiệu bằng đồng 1144 bronze badges

Vâng, chúng tôi không thể chính xác làm những gì bạn cố gắng. Nhưng một cái gì đó có thể dưới đây có thể được thực hiện.

const [first, second] = getValues();
4

Sau đó, khi gọi phương thức

const [first, second] = getValues();
5

Đã trả lời ngày 27 tháng 6 năm 2019 lúc 6:48Jun 27, 2019 at 6:48

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

AnjanaanjanaAnjana

8931 Huy hiệu vàng5 Huy hiệu bạc13 Huy hiệu đồng1 gold badge5 silver badges13 bronze badges

Có thể trả về một chuỗi với nhiều giá trị và biến bằng cách sử dụng các chữ cái theo nghĩa đen `$ {}`

like:

const [first, second] = getValues();
6

Nó ngắn và đơn giản.

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript

David Buck

3.60933 Huy hiệu vàng31 Huy hiệu bạc35 Huy hiệu Đồng33 gold badges31 silver badges35 bronze badges

Đã trả lời ngày 19 tháng 8 năm 2020 lúc 9:15Aug 19, 2020 at 9:15

Hướng dẫn return multiple values javascript - trả về nhiều giá trị javascript