Как получить доступ к ["X", "X", "O", "", "O"] - PullRequest
0 голосов
/ 25 августа 2018
function Type(name, effectivenessData) {
    this.name = name;
    this.effectivenessData = effectivenessData;
}

var types = [
    new Type("Fire", ["X", "X", "O", "", "O"]),
    new Type("Water", ["O", "X", "X", "", ""]),
    new Type("Grass", ["X", "O", "X", "", ""]),
    new Type("Electric", ["", "O", "X", "X", ""]),
    new Type("Ice", ["X", "X", "O", "", "X"])
];

var getTypes = function getTypeNames() {
    return types.map(t => t.name);
}

Мои решения: Привет всем, я использую внутренний цикл for для получения доступа к DataData, но получаю сообщение об ошибке, говоря, что длина не определена. Может кто-нибудь помочь мне понять, как я могу получить доступ к данным здесь .. или что я делаю не так

for (var i =0; i < getTypes.length; i++) {
    console.log(getTypes[i].toString());

    for(var j=0; j< getTypes[i].effectivenessData; j++) {
console.log(getTypes[i].effectivenessData.[j]) // When I console log to check the data I get length undefined 
}
}

Ответы [ 4 ]

0 голосов
/ 25 августа 2018

getTypes должен быть вызван, например, getTypes(), а его возвращаемое значение должно быть сохранено в var, чтобы код итерации был чище.

0 голосов
/ 25 августа 2018

Похоже, вы пытаетесь напечатать типы name в одном цикле и effectivenessData в другом. Вы пытаетесь индексировать в getTypes, как если бы это был массив, но это функция, которая не поддерживает такие операции. Используйте getTypes для извлечения массива, затем вызовите forEach для массива, чтобы перебрать его элементы:

function Type(name, effectivenessData) {
    this.name = name;
    this.effectivenessData = effectivenessData;
}

var types = [
    new Type("Fire", ["X", "X", "O", "", "O"]),
    new Type("Water", ["O", "X", "X", "", ""]),
    new Type("Grass", ["X", "O", "X", "", ""]),
    new Type("Electric", ["", "O", "X", "X", ""]),
    new Type("Ice", ["X", "X", "O", "", "X"])
];

var getTypes = function () {
    return types.map(t => t.name);
};

getTypes().forEach(e => console.log(e));

types.forEach(e => console.log(e.effectivenessData));

// or, using a traditional loop:
for (let i = 0; i < types.length; i++) {
  console.log(types[i]);
}

Как можно видеть здесь, getTypes является кандидатом на переименование (потому что оно действительно возвращает тип names ) или удаление (потому что, кажется, оно не добавляет много к коду в его нынешнем виде) .

0 голосов
/ 25 августа 2018

Вы можете использовать что-то вроде этого для циклического просмотра:

function Type(name, effectivenessData) {
   this.name = name;
   this.effectivenessData = effectivenessData;
}

var types = [
    new Type("Fire", ["X", "X", "O", "", "O"]),
    new Type("Water", ["O", "X", "X", "", ""]),
    new Type("Grass", ["X", "O", "X", "", ""]),
    new Type("Electric", ["", "O", "X", "X", ""]),
   new Type("Ice", ["X", "X", "O", "", "X"])
];

for(var i = 0; i < types.length; i++){
   console.log(types[i].effectivenessData)
};
0 голосов
/ 25 августа 2018

Вы должны использовать getTypes()[i] вместо getTypes[i], поскольку это функция.

...