Как определить карту и объект в JavaScript?
Что такое карта?
Карта - это тип структуры данных, который помогает хранить данные в виде пар "ключ-значение". У него есть каждый уникальный ключ и сопоставленное ему значение. Кроме того, поскольку каждый сохраненный ключ уникален, на карте нет повторяющихся ключей. но значение может быть дублировано. Карта - это экземпляр объекта.
var map = new Map(); console.log(map instanceof Object); //true
Особый случай: ключ и значение на карте могут быть любого типа данных, не ограничиваясь только строкой или целым числом. в качестве примера на Java, когда мы определяем HashMap, мы должны указать, какие типы данных имеют ключ и значение.
Map<String,String> map = new HashMap<String,String>()
но в этом случае нам не нужно упоминать типы данных при определении карт в JavaScript. Ниже я упомянул, как определить объект Map в JS в качестве примера.
let variable_map = new Map ();
let sampleMap = new Map(); sampleMap.set("key1", 1); sampleMap.set("key2", "value1"); sampleMap.set(1, "value2");
Что такое объект?
объект следует той же концепции, что и карта, т. Е. Использует пары ключ-значение для хранения данных. Объект определенно не является экземпляром Карты. все объекты в Javascript являются экземплярами Object. В объекте также ключ («свойство») является уникальным и связан с одним значением. в соответствии с функциями ES6, когда мы присваиваем новое значение существующему свойству. новое значение будет заменено предыдущим.
var obj = new Object(); console.log(obj instanceof Map); //false
- В Object тип данных ключа ограничен целым числом, строками и символами. Но в Map это может быть любой тип данных (объект, массив и т. Д.).
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
Есть три способа создать новый пустой объект:
let variable = {}; // с помощью скобок (1 шаг)
var obj = new Object (); // конструктором (2-шаговый)
var obj = новый объект; // тот же результат
var obj = Object.create (ноль); // с помощью Object.prototype.create (3-шаговый)
Доступ к элементу
Карта:
Map.prototype.get (ключ)
map.get(key)// value
Объект:
Object. ‹key› и Object [‘key’]
obj.key //value obj['key'] //value
Добавление нового элемента
Карта:
Map.prototype.set ()
map.set("key","value"); //{1=>2, 2=>3, "key"=>"value"}
Но если вы передадите существующий ключ, он перезапишет значение, сопоставленное с этим ключом, новым значением.
Объект:
Объект. ‹key› = значение
Объект [‘key’] = значение
obj['grade'] = 'passs'; //{id: 1, gender: "male"} obj.gender = 'fail';
И то, и другое в порядке и перезапишет существующее сопоставленное значение, если свойство уже существует.
let person = { name: 'Rayan', age: 20, strength: 100 } let warrior = { age: 36, strength: 1500 } //I am going to assign warrior Object to person Object let myworrior = Object.assign(person, warrior); console.log(myworrior); OUTPUT : { name: 'Rayan', age: 36, strength: 1500 } // Did you see that, warrior object values overwrite person object values via using same key-feild.
Решим проблему.
Мы должны написать программу для подсчета и отображения количества повторений каждой буквы в предложении.
мы можем решить эту проблему с помощью карты и объекта.
let word = "These days I am studying";
- Во-первых, вам нужно удалить пробелы и поместить каждую букву в новый массив.
const word
Arry = Array.from(word.replace(/ /g, ''));
2. Затем вы можете удалить каждую повторяющуюся букву и поместить ее на новую карту или объект.
Объект :
Input :
wordArray : ['I', 'T', 'a', 'a', 'd','d', 'e', 'e', 'g', 'h','i', 'm', 'n', 's', 's','s', 't', 'u', 'y', 'y']
Result will be like this : {T: 1,h: 1,e: 2,s: 3,d: 2,a: 2,y: 2,I: 1,m: 1,t: 1,u: 1,i: 1,n: 1,g: 1}
Карта :
//create new Empty Map object var mapAllRepition = new Map(); // then, loopfor i = 0 to
stringArr.lengthdo // you can access array element using i
for (let i = 0; i < stringArr.length; i++) { mapAllRepition.set(word
Arry[i], (mapAllRepition.get(word
Arry[i]) || 0) + 1); } //now apply previous same logic when adding element // if same element come again and again every time add 1 and increse value using overwite feture in object and map.
Исходный код :