var people = new Array();
function People (name, location, age){
this.name = name;
this.location = location;
this.age = age;
}
Ich habe zwei andere Funktionen, um die Leute zu generieren und sie in eine Tabelle zu laden.Was bedeutet es, dass "JavaScript-Objekte durch Strings indiziert werden können"?
function generatePeople(){}
function loadPeopleIntoTable(){}
Ich brauche im Grunde durch die Liste der Leute zu gehen, ihre Namen und zeigen dann die häufigsten Vornamen, die in dieser Tabelle erscheinen. Diese Funktion heißt einfach commonFirstName().
function commonFirstName(){}
Der Hinweis gegeben ist „JavaScript-Objekte, die von Strings indiziert werden kann“, aber ich verstehe nicht, dass 100%. Ich habe bereits den Code geschrieben, um das Array durchzugehen und den gemeinsamen Vornamen zu finden. Aber ich kann nicht das People-Array aufrufen, um durch diese Liste zu gehen - ich kann es nur mit einem manuell erstellten Array in commonFirstName() arbeiten. Warum das?
Ich kann bei Bedarf weitere Erläuterungen geben.
function commonFirstName(){
alert(people[1]);
//Rest of code that does the occurrences/name here
}
Der Ausgang dafür ist einfach [object Object].
Auf der anderen Seite:
function commonFirstName(){
tempArray = ['John Smith', 'Jane Smith', 'John Black'];
//Run through algorithm for finding common name.
}
Gibt einen Alarm Ausgabe von „Common Name:. John Tritt 2 mal“
ich gedacht hatte, wenn ich die Array Menschen durch die Funktion einfach weitergegeben, wie :
function commonFirstName(people){
alert(people[1]);
}
Sollte mir etwas geben, irgendetwas. Ich erwarte zu diesem Zeitpunkt nicht nur den Vornamen, sondern zumindest den vollständigen Namen, Ort und Alter von Element 1 oder eines davon. Es läuft einfach nicht, als ob das Array nicht existiert oder einfach leer ist.
Dies ist mein Code für alles, was ich habe:
var PEOPLECOUNT = 100;
var people = new Array();
function People(name, location, age) {
this.name = name;
this.location = location;
this.age = age;
}
function initPage() {
generateTableRows();
generatePeople();
}
function generateTableRows() {
var table = document.getElementById("ageTable");
var tableBody = table.getElementsByTagName("tbody")[0];
for (var i = 0; i < PEOPLECOUNT; i++) {
var newRow = document.createElement("tr");
newRow.setAttribute("id", "ageRow" + i.toString(10));
var td1 = document.createElement("td");
var td2 = document.createElement("td");
var td3 = document.createElement("td");
td1.setAttribute("class", "dataCell");
td2.setAttribute("class", "dataCell");
td3.setAttribute("class", "dataCell");
newRow.appendChild(td1);
newRow.appendChild(td2);
newRow.appendChild(td3);
tableBody.appendChild(newRow);
}
}
function generatePeople() {
var firstNames = ["Jack", "Will", "Josh", "Tom", "Sam", "Chloe", "Emily", "Sophie", "Lily", "Olivia"];
var surnames = ["Smith", "Jones", "Brown", "Taylor", "Johnson", "White"];
var locationNames = ["Canyonville", "Hailsmere", "Northpath", "Gracemont", "Gainsburgh", "Heathersmith"];
for (var i = 0; i < PEOPLECOUNT; i++) {
var name = firstNames[randInt(firstNames.length - 1)] + " " + surnames[randInt(surnames.length - 1)];
var location = location[randInt(locationNames.length - 1)];
var age = randInt(100);
var currentPeople = new People(name, location, age);
people.push(currentPeople);
}
loadPeopleIntoTable();
}
function loadPeopleIntoTable() {
for (var i = 0; i < PEOPLECOUNT; i++) {
var people = people[i];
var peopleRow = document.getElementById("ageRow" + i.toString(10));
var cells = peopleRow.getElementsByTagName("td");
for (var j = 0; j < cells.length; j++) {
if (cells[j].hasChildNodes()) {
cells[j].removeChild(cells[j].childNodes[0]);
}
}
cells[0].appendChild(document.createTextNode(people.name));
cells[1].appendChild(document.createTextNode(people.location));
cells[2].appendChild(document.createTextNode(people.age.toString(10)));
}
}
function randInt(maxVal) {
return Math.floor(Math.random() * (maxVal + 1));
}
function commonFirstName() {
var tempArray = [];
var fName;
var array = ['John Smith', 'Jane Smith', 'John Black'];
for (i = 0; i < array.length; i++) {
fName = array[i].split(' ').slice(0, -1).join(' ');
tempArray.push(fName);
}
var mostCommon;
var occurences = 0;
for (j = 0; j < tempArray.length; j++) {
var tempName = tempArray[j];
var tempCount = 0;
for (k = 0; k < tempArray.length; k++) {
if (tempArray[k] == tempName) {
tempCount++;
}
if (tempCount > occurences) {
mostCommon = tempName;
occurences = tempCount;
}
}
}
alert(mostCommon + " : " + occurences);
}
jetzt mit dem Array vollen Namen dies funktioniert, die in der Funktion ist aber nicht für die Reihe von Menschen, die mit Namen, Ortsobjekten von Menschen bestehen und Alter (wie zu Beginn gezeigt). Ich brauche nur dieses Array durchlaufen, damit ich die Elemente teilen kann -_-
Bitte teilen Sie Ihren Code für das Durchlaufen des Arrays. –
this.name === this ["name"], es ist wie eine Hash-Map in Java oder ein Wörterbuch in anderen Sprachen – chiliNUT
Bitte geben Sie Code an, wo Sie die People() -Methode und people [] -Array verwenden. –