#javascript #for-loop #object
Вопрос:
Я использую плагин Datamaps и пытаюсь получить доступ к объекту, который находится в другом объекте.
Здесь я хочу получить все значения data
in options
. Пожалуйста, посмотрите на консоль.войдите в систему, ответьте на скриншот ниже.
Вот js:
var map = new Datamap({
scope: "fra",
element: document.getElementById("map-france"),
responsive: true,
fills: {
defaultFill: "#EDE8D6",
"1-50": color_dept[4],
"51-100": "#EDE8D6",
"101-150": "#E2DABF",
"151-200": "#CEC191",
"201-300": "#BCAE7C",
"301-400": "#9D893E",
"401-": "#827131",
},
data: {
YV: {
fillKey: "#EDE8D6",
},
AM: {
fillKey: "51-100",
},
},
geographyConfig: {
popupTemplate: function (geo, data) {
for (const val of uniqueValues) {
if (geo.properties.name == val) {
return [
'<div class="hoverinfo"><strong>',
val,
"<br/>",
dataValues.filter((v) => v == val).length,
" parrainages",
"</strong></div>",
].join("");
}
}
},
hideAntarctica: true,
hideHawaiiAndAlaska: false,
borderWidth: 1,
borderOpacity: 1,
borderColor: "#D2D3B5",
popupOnHover: true, // True to show the popup while hovering
highlightOnHover: true,
highlightFillColor: "#1E2382",
highlightBorderColor: "#FFFFFF",
highlightBorderWidth: 1,
highlightBorderOpacity: 1,
},
setProjection: function (element) {
var projection = d3.geo
.mercator()
.center([2.454071, 46.279229])
.rotate([0, 0])
.scale(1700)
.translate([350, 225]);
var path = d3.geo.path().projection(projection);
return {
path: path,
projection: projection,
};
},
});
Object.entries(map).map((item) => {
console.log("item 1 : ", item);
});
Комментарии:
1. вам не нужно использовать
map()
, можете ли вы попробовать войтиmap.data
в систему ?2. Что такое а
Datamap
?3. @Rojo это плагин для карт
4. Не могли бы вы предоставить ссылку на репозиторий github для этого или что-то в этом роде?
5. @AzizaKasenova, это не определено :
Object.entries(map).map((item) => { console.log("item 1 : ", map.data); });
Ответ №1:
Экс.
const mapExample = new Map()
mapExample.set("test",
{"nestedObj":{"newObject":"new Obj value"}})
теперь сопоставьте это, и вы получите массив с объектом верхнего уровня «тест».
чтобы получить значение вложенного значения «newObject»:
Object.entries(mapExample.get("test")).map(i=> console.log(i[1].newObject))
или
Object.entries(mapExample.get("test")).map(i=> {
let [key,value] = i
console.log(key,value)
});
можете скопировать и опубликовать это в консоли Chrome и повозиться с ним, чтобы увидеть разные результаты.
но ключевой путь-это объект.записи возвращают массив вашего объекта в порядке [«ключ»:»значение»].
Комментарии:
1. это дает мне ошибку : неучтенная ошибка типа: map.get не является функцией
2. Возможно, было плохой идеей использовать для вашего ответа то же имя переменной
Map
, что и для существующейDatamap
переменной операции.3. @HereticMonkey, спасибо за ваш комментарий, я изменил его, но ошибка все еще здесь : Неперехваченная ошибка типа: mapdata.get не является функцией
Object.entries(mapdata.get("options")).map((i) => { let [key, value] = i; console.log(key, value); });
4. Значит, в коде что-то не так. Возможно
Map
, был переопределен каким-то другим кодом и больше не ссылается на стандартный встроенныйMap
объект, у которого естьget
метод @MeryemACHEMLAL.5. @MeryemACHEMLAL, в примере я использовал структуру данных карты, потому что предположил, что ваш пользовательский класс имеет тип Map() из-за того, как он был назван. но для обычных объектов, подобных вашему примеру. если бы я хотел получить значение YV и AM: Объект.записи(MapData.данные).карта(i=> { пусть [ключ,значение] = я консоль.журнал(значение. fillKey) }); даст вам значение