Tôi đang cố gắng làm điều tương tự như bài đăng đó. Vấn đề duy nhất là tôi không biết khóa và giá trị trả trước là gì. Vì vậy, tôi cần có thể tự động thêm các cặp khóa và giá trị và tôi không biết cách thực hiện điều đó
Có ai biết cách tạo đối tượng đó và thêm động các cặp giá trị chính không?
tôi đã thử
var vars = [{key:"key", value:"value"}];
vars[0].key = "newkey";
vars[0].value = "newvalue";
Nhưng điều đó không hiệu quả
Giải pháp tốt nhất
var dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
Về cơ bản, bạn đang tạo một đối tượng theo nghĩa đen với 2 thuộc tính [được gọi là
var dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
3 và var dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
4] và chèn nó [sử dụng var dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
5] vào mảngChỉnh sửa. Vì vậy, gần 5 năm sau, câu trả lời này đang nhận được phản đối vì nó không tạo ra một đối tượng JS "bình thường" theo nghĩa đen [còn gọi là bản đồ, hay còn gọi là hàm băm, hay còn gọi là từ điển].
Tuy nhiên, nó đang tạo ra cấu trúc mà OP đã yêu cầu [và được minh họa trong câu hỏi khác được liên kết với], đó là một mảng các đối tượng bằng chữ, mỗi ký tự có thuộc tính
var dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
3 và var dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
4. Đừng hỏi tôi tại sao cấu trúc đó được yêu cầu, nhưng đó là cấu trúc được yêu cầu. Nhưng, nhưng, nếu những gì bạn muốn trong một đối tượng JS đơn giản - chứ không phải cấu trúc mà OP yêu cầu - hãy xem câu trả lời của tcll, mặc dù ký hiệu dấu ngoặc hơi cồng kềnh nếu bạn chỉ có các khóa đơn giản là tên JS hợp lệ. Bạn chỉ có thể làm điều này
// object literal with properties
var dict = {
key1: "value1",
key2: "value2"
// etc.
};
Hoặc sử dụng ký hiệu dấu chấm thông thường để đặt thuộc tính sau khi tạo đối tượng
________số 8Bạn muốn ký hiệu dấu ngoặc nếu bạn có các khóa có khoảng trắng, ký tự đặc biệt hoặc những thứ tương tự. e. g
var dict = {};
// this obviously won't work
dict.some invalid key [for multiple reasons] = "value1";
// but this will
dict["some invalid key [for multiple reasons]"] = "value1";
Bạn cũng muốn ký hiệu ngoặc nếu các phím của bạn là động
var dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
0Lưu ý rằng các khóa [tên thuộc tính] luôn là các chuỗi và các giá trị không phải chuỗi sẽ bị ép buộc thành một chuỗi khi được sử dụng làm khóa. e. g. một đối tượng
var dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
8 được chuyển đổi thành biểu diễn chuỗi của nóvar dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
2Tuy nhiên, xin lưu ý rằng điều này không nhất thiết phải "chỉ hoạt động", vì nhiều đối tượng sẽ có biểu diễn chuỗi như
var dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
9, điều này không tạo ra khóa không phải là duy nhất. Vì vậy, hãy cảnh giác với một cái gì đó nhưvar dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
4Mặc dù
// object literal with properties
var dict = {
key1: "value1",
key2: "value2"
// etc.
};
0 và // object literal with properties
var dict = {
key1: "value1",
key2: "value2"
// etc.
};
1 là các phần tử hoàn toàn khác nhau và duy nhất, cả hai đều có cùng một biểu diễn chuỗi cơ bản. var dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
9Lý do
var dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
8 không hoạt động như thế này là vì nguyên mẫu var dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
8 có một phương thức tùy chỉnh // object literal with properties
var dict = {
key1: "value1",
key2: "value2"
// etc.
};
5 sẽ ghi đè biểu diễn chuỗi mặc định. Và bạn có thể làm như vậyvar dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
1[Lưu ý rằng vì ở trên sử dụng một số ngẫu nhiên, xung đột tên vẫn có thể xảy ra rất dễ dàng. Nó chỉ để minh họa việc triển khai
// object literal with properties
var dict = {
key1: "value1",
key2: "value2"
// etc.
};
5. ]Vì vậy, khi cố gắng sử dụng các đối tượng làm khóa, JS sẽ sử dụng triển khai
// object literal with properties
var dict = {
key1: "value1",
key2: "value2"
// etc.
};
5 của chính đối tượng, nếu có hoặc sử dụng biểu diễn chuỗi mặc địnhGiải pháp liên quan
Python – Cách sắp xếp danh sách từ điển theo giá trị của từ điển
Hàm
// object literal with properties
var dict = {
key1: "value1",
key2: "value2"
// etc.
};
8 nhận tham số // object literal with properties
var dict = {
key1: "value1",
key2: "value2"
// etc.
};
9var dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
6Ngoài ra, bạn có thể sử dụng
// empty object literal with properties added afterward
var dict = {};
dict.key1 = "value1";
dict.key2 = "value2";
// etc.
0 thay vì tự xác định chức năngvar dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
0Để đầy đủ, hãy thêm
// empty object literal with properties added afterward
var dict = {};
dict.key1 = "value1";
dict.key2 = "value2";
// etc.
1 để sắp xếp theo thứ tự giảm dầnvar dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
1Javascript – Cách tạo GUID/UUID
[Đã chỉnh sửa vào ngày 16 tháng 10 năm 2021 để phản ánh các phương pháp hay nhất mới nhất để tạo UUID khiếu nại RFC4122]
Hầu hết người đọc ở đây sẽ muốn sử dụng mô-đun
// empty object literal with properties added afterward
var dict = {};
dict.key1 = "value1";
dict.key2 = "value2";
// etc.
2. Nó được kiểm tra và hỗ trợ tốtHàm
// empty object literal with properties added afterward
var dict = {};
dict.key1 = "value1";
dict.key2 = "value2";
// etc.
3 là một tiêu chuẩn mới nổi được hỗ trợ trong // empty object literal with properties added afterward
var dict = {};
dict.key1 = "value1";
dict.key2 = "value2";
// etc.
4 và số lượng trình duyệt ngày càng tăngNếu cả hai cách đó đều không phù hợp với bạn, thì có phương pháp này [dựa trên câu trả lời ban đầu cho câu hỏi này]
var dict = []; // create an empty array
dict.push[{
key: "keyName",
value: "the value"
}];
// repeat this last part as needed to add more key/value pairs
2Ghi chú. Việc sử dụng bất kỳ trình tạo UUID nào dựa trên Math. random[] không được khuyến khích mạnh mẽ [bao gồm các đoạn trích có trong các phiên bản trước của câu trả lời này] vì những lý do được giải thích rõ nhất tại đây. TL;DR. môn Toán. các giải pháp dựa trên ngẫu nhiên [] không đảm bảo tính duy nhất tốt