Я сделаю ссылку на следующее:
тестовый объект
видовой объект.
Внутри объекта "виды" у меня есть два свойства: "виды" и "состояние".
Свойство "state" имеет значение, представляющее собой массив с состояниями.
Я хочу создать ключ для «тестового» объекта, который соответствует каждому состоянию внутри массива «state», расположенного в объекте вида объекта.
Пример вывода (посмотрите на код ниже, чтобы увидеть, откуда берутся эти значения):
{a: ["tiger", "dog"], b: ["tiger"], c: ["dog","lion"], d: ["tiger", "dog"], e: ["lion:]}
Идея состоит в том, что я хочу перечислить виды в каждом штате, и виды часто не ограничиваются одним штатом, поэтому один вид в Кентукки также может быть найден в Огайо. Я хочу, чтобы этот вид был внесен в список обитателей обоих государств, как описано выше.
Я получаю следующую ошибку:
Uncaught (in promise) TypeError: test[d].append is not a function
at script.js:272
at Array.forEach (<anonymous>)
at runVis (script.js:270)
at script.js:178
А вот и мой код:
var test = new Object();
var species = [{species: "tiger", state: ["a","b","d"]},
{species: "dog", state: ["a","c","d"]},
{species: "lion", state: ["c", "e"]}
];
for (i in species) {
species[i].state.forEach(function(d) {
if (d in test) {
test[d].append(species[i].species)
}
else {
test[d] = [species[i].species];
console.log(test);
}
})
}
Я создаю ключ для государства, если он еще не существует. Я также храню значение вида этого состояния в массиве впервые. Когда я сталкиваюсь с видом, который живет в состоянии, в котором уже есть ключ, я хочу добавить этот вид в массив, который является значением ключа состояния.