Ca sử dụng
Trường hợp sử dụng là để chuyển đổi một mảng các đối tượng thành bản đồ băm dựa trên chuỗi hoặc hàm được cung cấp để đánh giá và sử dụng làm khóa trong bản đồ băm và giá trị như chính đối tượng. Một trường hợp phổ biến của việc sử dụng này là chuyển đổi một mảng các đối tượng thành một bản đồ băm của các đối tượng.
Mã
Sau đây là một đoạn nhỏ trong JavaScript để chuyển đổi một mảng các đối tượng thành bản đồ băm, được lập chỉ mục bởi giá trị thuộc tính của đối tượng. Bạn có thể cung cấp một hàm để đánh giá khóa của bản đồ băm một cách linh hoạt (thời gian chạy). Hy vọng điều này sẽ giúp ai đó trong tương lai.
function isFunction(func) {
return Object.prototype.toString.call(func) === '[object Function]';
}
/**
* This function converts an array to hash map
* @param {String | function} key describes the key to be evaluated in each object to use as key for hashmap
* @returns Object
* @Example
* [{id:123, name:'naveen'}, {id:345, name:"kumar"}].toHashMap("id")
* Returns :- Object {123: Object, 345: Object}
*
* [{id:123, name:'naveen'}, {id:345, name:"kumar"}].toHashMap(function(obj){return obj.id+1})
* Returns :- Object {124: Object, 346: Object}
*/
Array.prototype.toHashMap = function(key) {
var _hashMap = {}, getKey = isFunction(key)?key: function(_obj){return _obj[key];};
this.forEach(function (obj){
_hashMap[getKey(obj)] = obj;
});
return _hashMap;
};
Bạn có thể tìm thấy ý chính ở đây: Chuyển đổi mảng đối tượng thành HashMap .