Làm thế nào để bạn xáo trộn một đối tượng trong javascript?

Sự cố.
Nếu bạn đang tìm cách sắp xếp lại các thuộc tính của một đối tượng JavaScript (vì bạn có thể đã có một mảng kết hợp từ PHP chuyển cho bạn một mảng được mã hóa json), bạn có thể thấy khó thực hiện.

Lưu ý. Tôi xây dựng dựa trên phương pháp ActionScript 3 trước đây của mình. 0 Phương pháp xáo trộn. JavaScript và ActionScript đều là ngôn ngữ ECMA và có cú pháp rất giống nhau. Phương pháp xáo trộn tôi đang sử dụng bên dưới nếu giống với phương pháp tôi đã đăng trước đây.

Giải pháp.
Giải pháp tôi đưa ra có thể không đẹp nhất nhưng nó hoàn thành công việc. Nó sử dụng kết hợp ba hàm (bao gồm cả phương thức nguyên mẫu Array shuffle).

Đầu tiên, tôi bắt đầu với đối tượng JavaScript mà tôi muốn xáo trộn các thuộc tính cho.
var obj = {
        "đỏ". "RED",
    "blue". "BLUE",
        "green". "XANH",
    "vàng". "VÀNG",
        "tím". "PURPLE"
    };

Tiếp theo, tôi đã sao chép phương thức nguyên mẫu Array của mình vào đầu tài liệu (lưu ý rằng vì đây là phương thức nguyên mẫu nên chúng tôi bắt buộc phải xác định nó trước khi sử dụng.
Mảng. nguyên mẫu. shuffle = function(){
        for (var i = 0; i < this. chiều dài; . tầng (Toán. ngẫu nhiên() * cái này. độ dài);
            var a = this[i];
            var b = Math.floor(Math.random() * this.length);
        this[i] = this[b];
        this[b] = a;
    }    }
Bây giờ tôi đã viết hai phương pháp mới để giúp hoàn thành công việc. Một hàm gọi là getKeys() lấy một đối tượng và trích xuất các khóa trả về một mảng khóa đơn giản cho đối tượng đó.
function getKeys(obj){
    var arr = new Array();
        for (khóa var trong obj)
            arr.push(key);
        return arr;
    }
Cuối cùng tôi đã viết một phương thức sẽ kết hợp tất cả lại với nhau và trả về một đối tượng mới có các thuộc tính được xáo trộn. Đầu tiên, phương thức xác định một đối tượng mới sẽ chứa các thuộc tính được xáo trộn của tôi. Sau đó, chúng tôi sử dụng chức năng getKeys của mình để lấy tất cả các khóa từ đối tượng. Sau đó, chúng tôi gọi phương thức shuffle() (có thể truy cập trực tiếp thông qua nguyên mẫu lớp). Chúng tôi lặp qua các khóa (kiểm tra thuộc tính xáo trộn - hiện đã tồn tại trên đối tượng của chúng tôi) và bằng cách sử dụng cùng một khóa trên cả hai đối tượng, chúng tôi có thể chuyển khóa và giá trị sang đối tượng mới.
function shuffleProperties(obj) {
    var new_obj = {};
        var keys = getKeys(obj);
        keys.shuffle();
        for (key var in keys){
            if (key == "shuffle") continue;
            new_obj[keys[key]] = obj[keys[key]];
        }
        return new_obj;
    }
 Bây giờ để sử dụng điều này từ chương trình của bạn, bạn có thể làm như thế này.
obj = shuffleProperties(obj);
Với việc ghi đè obj ban đầu của chúng ta bằng đối tượng được trả về từ phương thức shuffleProperties(), giờ đây chúng ta có thể sử dụng obj của mình như thể chúng ta vừa xáo trộn các thuộc tính xung quanh.

Đây là mã hoàn chỉnh.
var obj = {
        "đỏ". "ĐỎ",
    "xanh dương". "BLUE",
        "green". "XANH LÁ CÂY",
    "vàng". "VÀNG",
        "tím". "PURPLE"
    };
   
    Mảng. nguyên mẫu. shuffle = function(){
        for (var i = 0; i < this. chiều dài; . tầng (Toán. ngẫu nhiên() * cái này. độ dài);
            var a = this[i];
            var b = Math.floor(Math.random() * this.length);
        this[i] = this[b];
        this[b] = a;
       }
    }
   
    obj = shuffleProperties(obj); // run shuffle
   
    function shuffleProperties(obj) {
        var new_obj = {};
        var keys = getKeys(obj);
        keys.shuffle();
        for (var key in keys){
        if (key == "shuffle") continue; . push(key);
            new_obj[keys[key]] = obj[keys[key]];
        }
        return new_obj;
    }
   
    function getKeys(obj){
        var arr = new Array();
        for (var key in obj)
            arr.push(key);
        return mảng;
    }
Nếu bạn có cải tiến hoặc đề xuất, vui lòng để lại nhận xét. Cảm ơn

Làm cách nào để ngẫu nhiên hóa các đối tượng trong một mảng JavaScript?

Ví dụ. Lấy mục ngẫu nhiên từ một mảng .
Một số ngẫu nhiên từ 0 đến mảng. chiều dài được tạo bằng Math. phương pháp ngẫu nhiên ()
Toán học. floor() trả về giá trị số nguyên gần nhất được tạo bởi Math. ngẫu nhiên()
Chỉ mục ngẫu nhiên này sau đó được sử dụng để truy cập một phần tử mảng ngẫu nhiên

Xáo trộn JSON là gì?

JSON Shuffle là công cụ sẽ ngẫu nhiên hóa thứ tự của các đối tượng trong một mảng JSON, xáo trộn nó . Sao chép và dán hoặc nhập trực tiếp mảng JSON của bạn vào trình chỉnh sửa ở trên và nhấn "Xáo trộn JSON".