Я все еще немного новичок в JavaScript, Node и т. Д. И пришел из Groovy (с синтаксисом, очень похожим на JavaScript). В Groovy я легко могу сделать что-то вроде этого:
def myMap1 = {};
def myMap2 = {};
myMap1["key1"] = "value1";
myMap1["key2"] = "value2";
myMap1["key3"] = "value3";
myMap1.each() { key, value =>
myMap2[key] = value;
}
Это будет выполнять итерацию по существующей карте (myMap1) и копировать значения для каждого ключа в новую карту (myMap2) с теми же именами ключей. Проще простого. Тем не менее, у JS есть концепция прототипа, которая сводит меня с ума, потому что вы должны использовать hasOwnProperty, индекс вида вещей и т. Д., И это приводит к большому количеству кода для чего-то, что должно быть действительно простым.
Глядя на документы MDN для Object (), кажется, что JS реализовал что-то, что позволяет разработчику получить доступ к парам ключ / значение без необходимости иметь дело с прототипированием и всем этим, и вы можете просто получить доступ к данным в объект, а не свойства объекта. Теперь у меня есть это:
var existingData = {"foo":"thing","bar":"otherThing","baz":"whatever"};
var update = {"foo":"newStuff","bar":"thisChanged","baz":"arghh"};
for (const [ key, value ] of Object.entries(update)) {
console.log("Old value is " + existingData[key]);
existingData[key] = value;
console.log("Setting " + existingData[key] + " to " + value);
}
Я думаю, это сработает, но вместо этого я получаю это в консоли:
Old value is undefined
Setting thing to thing
Old value is undefined
Setting otherThing to otherThing
Old value is undefined
Setting whatever to whatever
Похоже, что существующие данные [ключ] ссылаются не на ключ в паре ключ / значение, а на значение или что-то в этом роде? Как мне сказать, "для этого имени ключа во втором объекте установить это значение?" Я всегда искал в Google, и все либо делали это по-старому (с индексами), либо слишком усложнялись без особой причины. Любая помощь будет принята с благодарностью.