Hướng dẫn does map allow duplicate keys javascript? - bản đồ có cho phép các khóa trùng lặp javascript không?

Phương thức đối tượng bản đồ

function loadUserByName(name) {
    db.loadUser({ name }, (err, user) => {
        users.set(String(user.id), user);          
    });
}
7 có nghĩa là thêm một khóa/cặp mới hoặc cập nhật khóa/cặp khóa hiện có. Xem tài liệu.

Tôi đã đấu tranh để tìm ra cách mà bản đồ của tôi đã kết thúc với các khóa trùng lặp khi tôi cố gắng điền nó với kết quả cơ sở dữ liệu:

let users = new Map();

function loadUserByName(name) {
    db.loadUser({ name }, (err, user) => {
        users.set(user.id, user);          
    });
}

loadUser('george');
users.forEach( (item) => { console.log(item.key); } );
// Output:
// 57bbfcb47ff30b00db69ae87

loadUser('george');
users.forEach( (item) => { console.log(item.key); } );
// Output:
// 57bbfcb47ff30b00db69ae87
// 57bbfcb47ff30b00db69ae87

Hỏi ngày 24 tháng 8 năm 2016 lúc 10:41Aug 24, 2016 at 10:41

Hướng dẫn does map allow duplicate keys javascript? - bản đồ có cho phép các khóa trùng lặp javascript không?

Anthonygoreanthonygoreanthonygore

4.6284 Huy hiệu vàng29 Huy hiệu bạc 30 Huy hiệu Đồng4 gold badges29 silver badges30 bronze badges

Một bản đồ có thể có một đối tượng làm khóa. Và chỉ vì hai đối tượng đầu ra là cùng một chuỗi, không có nghĩa là chúng là cùng một đối tượng. Mã trên có thể được sửa bằng cách đúc

function loadUserByName(name) {
    db.loadUser({ name }, (err, user) => {
        users.set(String(user.id), user);          
    });
}
8 dưới dạng chuỗi, tức là:

function loadUserByName(name) {
    db.loadUser({ name }, (err, user) => {
        users.set(String(user.id), user);          
    });
}

Đã trả lời ngày 24 tháng 8 năm 2016 lúc 10:41Aug 24, 2016 at 10:41

Hướng dẫn does map allow duplicate keys javascript? - bản đồ có cho phép các khóa trùng lặp javascript không?

Anthonygoreanthonygoreanthonygore

4.6284 Huy hiệu vàng29 Huy hiệu bạc 30 Huy hiệu Đồng4 gold badges29 silver badges30 bronze badges

1

Làm thế nào để xác định bản đồ và đối tượng trong JavaScript?

Bản đồ là gì?

MAP là loại cấu trúc dữ liệu giúp lưu trữ dữ liệu dưới dạng các cặp giá trị khóa. Nó có mỗi khóa duy nhất và một giá trị được ánh xạ cho nó. Ngoài ra, vì mỗi khóa được lưu trữ là duy nhất, không có khóa trùng lặp trên bản đồ. Nhưng giá trị có thể được trùng lặp. Bản đồ là một thể hiện của một đối tượng. is a data structure type that helps in storing the data as key-value pairs. It has each unique key and a value mapped to it. Additionally, because each stored key is unique, There are no duplicate keys on the map. but Value can be duplicate. The map is an instance of an Object.

var map = new Map();
console.log(map instanceof Object); //true

Trường hợp đặc biệt: Khóa và giá trị trong bản đồ có thể ở bất kỳ loại dữ liệu nào, không chỉ giới hạn ở chuỗi hoặc số nguyên. Như một ví dụ trong Java khi chúng ta xác định Hashmap, chúng ta phải chỉ định các loại dữ liệu trong khóa và giá trị là gì.key and value in Map can be in any data type, not limited to only string or integer. as an example in Java when we define HashMap we have to specify what are the data types in key and value.

Map map = new HashMap()

Nhưng trong trường hợp này, chúng tôi không cần đề cập đến các loại dữ liệu khi chúng tôi xác định bản đồ trong JavaScript. Tôi đã đề cập dưới đây làm thế nào để xác định đối tượng MAP trong JS làm ví dụ.

Đặt biến_map = new map ();

let sampleMap = new Map();sampleMap.set("key1", 1);sampleMap.set("key2", "value1");sampleMap.set(1, "value2");

Đối tượng là gì?

Đối tượng tuân theo khái niệm giống như bản đồ của bản đồ, tức là sử dụng van khóa để lưu trữ dữ liệu. Đối tượng chắc chắn không phải là một ví dụ của bản đồ. Tất cả các đối tượng trong JavaScript là các thể hiện của đối tượng. Trong khóa đối tượng (thuộc tính của người dùng) là duy nhất và được liên kết với một giá trị duy nhất. Theo các tính năng của ES6 khi chúng tôi gán một giá trị mới cho một thuộc tính hiện có. Giá trị mới sẽ được ghi đè với giá trị trước đó.object follows the same concept as that of a map i.e. using key-value pairs for storing data. The object is definitely not an instance of Map. all objects in Javascript are instances of Object. In Objectalso key (“property”)is unique and associated with a single value. according to ES6 features when we assign a new value to an existing property. the new value will be overridden with the previous value.

var obj = new Object();
console.log(obj instanceof Map); //false
  • Trong đối tượng, loại dữ liệu của khóa được giới hạn ở số nguyên, chuỗi và ký hiệu. Nhưng trong bản đồ, nó có thể là bất kỳ loại dữ liệu nào (một đối tượng, một mảng, v.v.).Map, it can be any data type (an object, an array, etc…).
let obj = {}; //Empty new object
obj[{ "ex": 2 }] = 3;
// This is not aplicable. In object key-feild only allow integer, strings, and symbols. In Value field any data type will be allow.
let map = new Map(); //Empty new map
map.set({ "ex": 2 }, 3);
// This is aplicable. In map you can use any data type as key and value

Có ba cách để tạo một đối tượng trống mới:

Đặt biến = {}; // sử dụng dấu ngoặc (1- bước)using Brackets(1- step)

var obj = new object (); // bởi Constructor (2- bước) //by constructor (2- step)

var obj = đối tượng mới; //cùng một kết quả

var obj = object.create (null); // bằng cách sử dụng object.prototype.create (3- bước)//by using Object.prototype.create (3- step)

Truy cập phần tử

Bản đồ :

Map.prototype.get(key)

map.get(key)// value

Sự vật :

Bản đồ :

obj.key //value
obj['key'] //value

Mã nguồn :

Bản đồ :

Map.prototype.set()

map.set("key","value"); //{1=>2, 2=>3, "key"=>"value"}

Mã nguồn :overwrite the value mapped to that key with the new value

Sự vật :

Bản đồ có thể có hai khóa giống nhau không?

Giao diện bản đồ lưu trữ các yếu tố dưới dạng các cặp giá trị khóa. Nó không cho phép các khóa trùng lặp nhưng cho phép các giá trị trùng lặp. Các lớp Hashmap và LinkedHashMap là các triển khai được sử dụng rộng rãi của giao diện bản đồ. Nhưng giới hạn của giao diện bản đồ là nhiều giá trị không thể được lưu trữ theo một khóa duy nhất.

function loadUserByName(name) {
    db.loadUser({ name }, (err, user) => {
        users.set(String(user.id), user);          
    });
}
0

Bản đồ có cho phép trùng lặp không?overwrite the existing mapped value if property already exists.

function loadUserByName(name) {
    db.loadUser({ name }, (err, user) => {
        users.set(String(user.id), user);          
    });
}
1

Các điểm cần nhớ: MAP không cho phép các khóa trùng lặp, nhưng nó cho phép các giá trị trùng lặp. Hashmap và LinkedHashMap cho phép các phím null và giá trị null nhưng Treemap không cho phép bất kỳ khóa hoặc giá trị null nào.

TreeMap có cho phép các khóa trùng lặp không?

Chúng ta có thể giải quyết vấn đề này bằng cách sử dụng bản đồ và đối tượng.map and object.

function loadUserByName(name) {
    db.loadUser({ name }, (err, user) => {
        users.set(String(user.id), user);          
    });
}
2
  1. Đầu tiên, bạn cần gỡ bỏ khoảng trống và đặt mỗi chữ cái vào một mảng mới.
function loadUserByName(name) {
    db.loadUser({ name }, (err, user) => {
        users.set(String(user.id), user);          
    });
}
3

2. Sau đó, bạn có thể xóa từng chữ bản sao và đặt nó vào một bản đồ hoặc đối tượng mới.map or Object.

Sự vật :

function loadUserByName(name) {
    db.loadUser({ name }, (err, user) => {
        users.set(String(user.id), user);          
    });
}
4
function loadUserByName(name) {
    db.loadUser({ name }, (err, user) => {
        users.set(String(user.id), user);          
    });
}
5

Bản đồ :

function loadUserByName(name) {
    db.loadUser({ name }, (err, user) => {
        users.set(String(user.id), user);          
    });
}
6

Mã nguồn :

Bản đồ có thể có hai khóa giống nhau không?

Giao diện bản đồ lưu trữ các yếu tố dưới dạng các cặp giá trị khóa.Nó không cho phép các khóa trùng lặp nhưng cho phép các giá trị trùng lặp.Các lớp Hashmap và LinkedHashMap là các triển khai được sử dụng rộng rãi của giao diện bản đồ.Nhưng giới hạn của giao diện bản đồ là nhiều giá trị không thể được lưu trữ theo một khóa duy nhất.It does not allow duplicate keys but allows duplicate values. HashMap and LinkedHashMap classes are the widely used implementations of the Map interface. But the limitation of the Map interface is that multiple values cannot be stored against a single key.

Bản đồ có cho phép trùng lặp không?

Các điểm cần nhớ: MAP không cho phép các khóa trùng lặp, nhưng nó cho phép các giá trị trùng lặp.Hashmap và LinkedHashMap cho phép các phím null và giá trị null nhưng Treemap không cho phép bất kỳ khóa hoặc giá trị null nào.Map doesn't allow duplicate keys, but it allows duplicate values. HashMap and LinkedHashMap allows null keys and null values but TreeMap doesn't allow any null key or value.

TreeMap có cho phép các khóa trùng lặp không?

Một treemap không thể chứa các khóa trùng lặp.Treemap không thể chứa phím null.Tuy nhiên, nó có thể có giá trị null.. TreeMap cannot contain the null key. However, It can have null values.