создал хеш и при использовании функции длины возвращает неопределенный - PullRequest
0 голосов
/ 22 мая 2019

Ниже приведен код для генерации хеша, и теперь я пытаюсь перебрать хеш, но безуспешно

let intArr = [2, 2, 3, 4, 4, 3, 3]
let cntArr = {};

for (let index in intArr) {
  cntArr[intArr[index]] = intArr[index] + 1
}
console.log(cntArr);
console.log(cntArr.length) // undefined

for(let [key, value] in Object.entries(cntArr))
{
	console.log(value+' '+key);  //undefined 0 ????
}

cntArr - это объект типа, и я озадачен, почему я не могу получить итеративный хеш ... что я могу пропустить.

Ответы [ 3 ]

3 голосов
/ 22 мая 2019

Объекты не имеют свойства length - вы можете использовать forEach более Object.keys, если хотите перебрать объект:

let intArr = [2, 2, 3, 4, 4, 3, 3]
let cntArr = {};

for (let index in intArr) {
  cntArr[intArr[index]] = intArr[index] + 1
}
console.log(cntArr);
console.log("Length of cntArr: ", Object.keys(cntArr).length);
Object.keys(cntArr).forEach(key => console.log(key, cntArr[key]));
.as-console-wrapper { max-height: 100% !important; top: auto; }

Если вы хотите перебрать и ключ, и значение объекта:

let intArr = [2, 2, 3, 4, 4, 3, 3]
let cntArr = {};

for (let index in intArr) {
  cntArr[intArr[index]] = intArr[index] + 1
}
console.log(cntArr);
for (let [key, value] of Object.entries(cntArr)) {
  console.log(key, value);
}
.as-console-wrapper { max-height: 100% !important; top: auto; }
2 голосов
/ 22 мая 2019

Объект javascript не имеет свойства length, если вы не укажете его. Если вы хотите узнать, сколько ключей в объекте, вы можете посмотреть длину массива, возвращенного из Object.keys():

let intArr = [2,2,3,4,4,3,3]
let cntArr={};

for(let index in intArr){
    cntArr[intArr[index]] = intArr[index] + 1

}
console.log(Object.keys(cntArr).length)

// all keys:

console.log(...Object.keys(cntArr))

Можно также выполнить итерации по Object.keys, Object.values или Object.entries, если вы хотите пройти по всем элементам объекта.

0 голосов
/ 22 мая 2019

Вы можете использовать цикл for для итерации по хешу, также вы можете использовать Object.keys(cntArr).length, чтобы определить длину вашего хеш-объекта

let intArr = [2,2,3,4,4,3,3]
let cntArr={};

for(let index in intArr){
    cntArr[intArr[index]] = intArr[index] + 1
}
console.log(cntArr);
console.log('hash size: ' + Object.keys(cntArr).length)
	
for(var i in cntArr){
	console.log(i);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...