edit: Ниже приведена упрощенная версия того, что я пытался сделать. Прошу прощения, что показался неполным. Я попытался сделать минимальный воспроизводимый пример, но моих знаний javascript слишком мало, и я подумал, что проблема эквивалентна (тривиальна).
У меня есть массив конечных точек choices.
Я пытаюсь заполнить словарь data_collection.
choices.forEach((choice) => getAllData(choice.value))
куда
function getAllData(datapoint)
{
d3.json(dataroot + datapoint).then((res) => alldata[datapoint] = res);
}
Я получаю сообщение об ошибке:
Element implicitly has an 'any' type because expression of type 'any' can't be used to index type 'Object'
Сейчас я пробую все добрые предложения в комментариях и обновлю, как только сделаю все из них.
Я пытался заполнить «словарь» данных в javascript и проиндексировать его строкой.
Я следовал какому-то простому руководству, но я должен его неправильно понять.
let choices = ["hello", "world", "yeah"]
let data_collection = new Object();
choices.forEach(choice => data_collection[choice] = choice.length);
console.info(data_collection);Я получаю сообщение об ошибке, что объект сортировки не может быть назначен строкой.
Спасибо заранее! Извиняюсь за вопрос абсолютного новичка.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я не знаю, является ли это решением, которое вы ищете, попробуйте.
let choices = ["hello", "world", "yeah"]
let data_collection = new Object();
for (let i of choices) {
data_collection[choices.indexOf(i)] = i;
}
console.info(data_collection);
отобразит это в консоли:
{0: 'hello', 1: 'world', 2: 'yeah'}
Я решил, что этот вопрос касается словаря Typescript. Когда я пытаюсь включить ваш код в свой файл .TS, VSCode дает красную строку, говорящую: «Элемент неявно имеет тип «любой», потому что выражение типа« число »может нельзя использовать для индексации типа «Объект».
В Typescript я бы сказал, что правильно объявите свой словарь как карту, например
изменение
let choices = ["hello", "world", "yeah"]
let data_collection = new Object();
choices.forEach(choice => data_collection[choice] = choice.length);
console.info(data_collection);
в
let choices = ["hello", "world", "yeah"]
let data_collection: Map<string,number> = new Map<string,number>();
choices.forEach(choice => data_collection.set(choice, choice.length);
console.info(data_collection);
При тестировании второго фрагмента мой вывод консоли webkit для data_collection выглядит следующим образом:
Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат.