#javascript #arrays #list
#javascript #массивы #Список
Вопрос:
Итак, я пытался составить список имен в JavaScript. Я добавил текстовое поле и кнопку для добавления имен, и это работает отлично, но теперь мне нужно выполнить проверку в этом списке, и когда я ввел имя «Джон», например, дважды, в моем списке должно появиться «Джон 2 раза», при трехкратном вводе «Джон 3 раза» и так далее.. Я действительно застрял в этой части и надеюсь, что вы сможете мне с этим помочь.
"use strict";
let voornaam = [];
document.getElementById("toevoegen").onclick=function(){
const voornaamInput = document.getElementById("voornaam");
const voornaam = voornaamInput.value;
toevoegen(voornaam);
voornaamInput.value="";
voornaamInput.focus();
}
//add name//
function toevoegen (voornaam){
const li = document.createElement("li");
li.innerText=voornaam;
document.getElementById("voornamen").appendChild(li);
}
//do the check//
function controle (voornaam) {
}
<label>Voornaam: <input id="voornaam" autofocus></label>
<button id="toevoegen">Toevoegen</button>
<ul id="voornamen">
</ul>
Комментарии:
1. Привет, вы можете добавить HTML к своему вопросу?
2. Привет @TessavWalstijn Я добавил свой html-код в toppic 🙂
Ответ №1:
Я внес некоторые изменения в код для вас. Я добавил кучу комментариев, чтобы помочь вам освоить некоторые новые приемы.
Использование правильного инструмента для работы здесь, на мой взгляд, было бы object
, а не array
. Если вы еще не разобрались в объектах, сделайте это, они великолепны, когда вы их понимаете.
'use strict';
// let voornaam = [];
let names = {
Steve: 1,
Mathias: 2,
};
document.getElementById('toevoegen').onclick = function () {
const voornaamInput = document.getElementById('voornaam');
const voornaam = voornaamInput.value;
tallyName(voornaam);
displayList();
voornaamInput.value = '';
voornaamInput.focus();
};
// Tally name
function tallyName(name) {
// Check name is not empty
if (name !== '') {
// Ternary operator - check the name is in our object and has a value of 0 or more.
// If its already there, add 1, else set it to 0.
// Try adding this without the check, you will see that you get unwanted behaviour such as NaN etc.
names[name] > -1 ? (names[name] = 1) : (names[name] = 0);
// Above line is equivalent to:
// if (names[name] > -1) {
// names[name] = names[name] 1;
// } else {
// names[name] = 0;
// }
} else {
console.log('Invalid input');
}
}
// Set list
function displayList() {
// Get list
const list = document.getElementById('voornamen');
// Remove existing list
while (list.firstChild) {
list.removeChild(list.firstChild);
}
// This may be a little confusing to start but is a great tool.
// It cycles the object and reads the key and its corresponding value
// Object.entries(names) would look like this: [['Steve', 0],['James',2]]
// So the first loop we get ['Steve', 0] and "destructure" it with the ([key, value])
console.log(Object.entries(names));
Object.entries(names).forEach(([k, v]) => {
// To see what this is doing.
console.log(k, v);
// Create new item
let newItem = document.createElement('li');
// Set text
newItem.innerText = k ': ' v;
// Add to document
list.appendChild(newItem);
});
}
Комментарии:
1. Привет, Стив, я хочу поблагодарить тебя за то, что помог мне с этим. Я начну с части объектов. Для меня это был первый раз, когда я разместил вопрос на этом веб-сайте, но я буду иметь в виду, что я изложу все на английском языке, чтобы лучше понять. Большое вам спасибо! ^^
2. Не беспокойтесь. Взгляните на эти курсы: zerotomastery.io/promotions . Их создает парень по имени Андрей, и он отлично преподает, по этой ссылке вы можете выбрать одну из двух ссылок, которая даст вам более низкую цену…. «Полный веб-разработчик в 2020 году: от нуля до мастерства» — это курс, на который вам следует обратить внимание, и, судя по тому, что я смотрю, он составляет около 11 австралийских долларов. Вы узнаете ооочень много, а его сообщество discord поможет вам связаться с множеством полезных людей. На данный момент я прошел около 4 его курсов.
3. Привет, Стив, я посмотрю на это! Большое вам за это спасибо!