php
  • javascript
  • list
  • explode
  • 2012-12-01 25 views 5 likes 
    5

    thể trùng lặp:
    Javascript equivalent of PHP’s list()PHP tương đương với danh sách và phát nổ trong javascript

    Tôi muốn có một tương đương với dòng này nhưng trong JavaScript:

    <?php list($Id, $Iduser, $Idmany) = explode("," , $IdALL); ?> 
    

    đâu:

    $IdALL = '1, 2, 3'; 
    

    Có cách nào để làm điều đó với JavaScript và có thể được hỗ trợ trên tất cả các trình duyệt hiện đại không?

    +0

    JavaScript 1.7 có [bài tập phá hủy] (https://developer.mozilla.org/en-US/docs/JavaScript/New_in_JavaScript/1.7#Destructuring_assignment_%28Merge_into_own_page.2Fsection%29) nhưng chỉ có tắc kè có bất kỳ thực thi thực sự nào của JavaScript 1.7 và [chúng tôi bkit hoạt động kém) (https://bugs.webkit.org/show_bug.cgi?id=23097). –

    +0

    @MuthuKumaran Đó chỉ là tâm trí của tôi. Tôi hy vọng nó sẽ sớm được hỗ trợ rộng rãi. –

    Trả lời

    7
    var values = "1, 2, 3".split(", "); 
    var keys = ["Id", "Iduser", "Idmany"]; 
    var final = {}; 
    
    for(var i = 0; i < values.length; i++){ 
        final[keys[i]] = values[i]; 
    } 
    

    Tất nhiên, phải trả giá bằng khả năng đọc bạn có thể làm tất cả điều này trong câu lệnh for:

    for(var i = 0, values = "1, 2, 3".split(", "), keys = ["Id", "Iduser", "Idmany"], final = {}; i < values.length; i++){ 
        final[keys[i]] = values[i]; 
    } 
    

    Các biến sau đó có thể được truy cập như sau:

    alert(final.Id); 
    alert(final.Iduser); 
    alert(final.Idmany); 
    
    +0

    Cảm ơn bạn Asad, nhưng làm thế nào tôi có thể sử dụng biến ra khỏi "cho"? Tôi cảnh báo họ bên trong và nó hoạt động, nhưng bên ngoài nó thì không! –

    +2

    @SamiElHilali Bạn phải truy cập chúng dưới dạng thuộc tính của đối tượng 'final'. Tôi đã thêm điều này vào câu trả lời của tôi. –

    +0

    Bạn thật tuyệt vời. cảm ơn rất nhiều ! –

    1

    Không, JavaScript hiện không có tương đương với cấu trúc list (được gọi là "nhiệm vụ phá hoại"). Bạn phải gán các biến riêng lẻ. ES.next may very well have something cho điều này, nhưng không phải là ES5 hiện tại (hoặc ES3 trên các trình duyệt cũ).

    Vì vậy, tốt nhất bạn có thể làm là vụng về hơn một chút:

    var idAll = "1, 2, 3"; 
    var parts = idAll.split(/\s*,\s*/); 
    var id = parts[0]; 
    var idUser = parts[1]; 
    var idMany = parts[2]; 
    

    Lưu ý rằng các ID sẽ là chuỗi; nếu bạn muốn chúng là số, bạn sẽ phải phân tích cú pháp chúng (parseInt là một tùy chọn, đặt + ở phía trước parts[0] và các cộng sự khác, this answer đi vào chi tiết).

    +0

    Ý tưởng đó với '+' thật tuyệt vời. Cảm ơn. – Hafenkranich

    1

    Vui lòng xem trang web: http://phpjs.org/functions/

    Ở đây bạn muốn tất cả các chức năng có sẵn trong php đến js.

    +1

    Điều này không thể thực hiện được ngay cả với nội dung từ trang web đó. JavaScript không có cấu trúc ngôn ngữ cần thiết để cho phép bạn gán nhiều biến cùng một lúc (và nó sẽ yêu cầu hỗ trợ ngôn ngữ, bạn không thể chỉ viết một hàm để làm điều đó). –

    +1

    Điều này không trả lời được câu hỏi. Tôi không thể tìm thấy chức năng 'list' từ liên kết của bạn. –

    +0

    @Muthu Hãy liệt kê() thực hiện trong Javascipt vui lòng theo liên kết: http://solutoire.com/2007/10/29/javascript-left-hand-assignment/ –

    Các vấn đề liên quan