проблема с объединением кода ha sh в одну строку _ Java Script - PullRequest
0 голосов
/ 03 августа 2020

У меня есть этот массив:

let a = ["a", "www", "qwqwq"];

, и мне нужно повторить его, чтобы получить ha sh каждого отдельного элемента. и сохраните его в одной переменной в виде строки.

function hashCode(str) {
    var hash = 0;
    if (str.length == 0) return hash;
    for (i = 0; i < str.length; i++) {
        char = str.charCodeAt(i);
        hash = (hash << 5) - hash + char;
        hash = hash & hash; // Convert to 32bit integer
    }
    return hash;
}
let strHash = "";
for (b of a){
    strHash.concat(`${hashCode(b)}`)
}
console.log(strHash)

, но я получаю пустую строку. почему?

Ответы [ 2 ]

4 голосов
/ 03 августа 2020

concat возвращает новую строку, вам нужно изменить свой код на:

for (b of a){
   strHash = strHash.concat(`${hashCode(b)}`)
}

Или, если вы хотите более функциональный подход, вы можете сделать:

const strHash = a.map(hashCode).join("")
1 голос
/ 03 августа 2020

Попробуйте так:

let a = ["a", "www", "qwqwq"];

function hashCode(str) {
    var hash = 0;
    if (str.length == 0) return hash;
    for (let i = 0; i < str.length; i++) {
        const char = str.charCodeAt(i);
        hash = (hash << 5) - hash + char;
        hash = hash & hash; // Convert to 32bit integer
    }
    return hash;
}
let strHash = [];
for (const b of a) {
    strHash.push(hashCode(b));
}
console.log(strHash.join("")) // 97118167108015397

ИЛИ это решение:

let strHash = "";
for (const b of a) {
    strHash += hashCode(b);
}
console.log(strHash) // 97118167108015397

ПРИМЕЧАНИЕ. В вашем коде есть некоторые проблемы javascript, например, вы не написали ключевое слово var/let/const перед вашими переменными в строках 6, 7, 14

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...