gpt4 book ai didi

javascript - 试图理解看起来像 map 功能的对象的 Javascript 代码

转载 作者:行者123 更新时间:2023-12-03 13:05:55 26 4
gpt4 key购买 nike

我正在学习 javascript 并遇到了一些类似于下面代码的 Javascript 代码。似乎只是通过将数组分配给 carArrays[car1.year]carArrays 对象就变成了 map 。所以我对这段代码有很多疑问。

  1. 哪些 javascript 规则允许您执行此操作?

  2. 我以为[]是数组的意思。如果 carArrays 现在是 map ,为什么要使用方括号对其进行索引?

  3. 我对 carArrays 成为 map 的解释是否正确?还是这仍然被视为具有键“1999”和“2005”的对象?

我的代码:

function car( make, model, year){
this.make = make;
this.model = model;
this.year = year;
}

let car1 = new car('bmw', '3series', 1999);
let car2 = new car('ford', 'crownvic', 1999);
let car3 = new car('honda', 'accord', 1999);

let car4 = new car('bentley', '5', 2005);
let car5 = new car('chevy', 'silverado', 2005);
let car6 = new car('toyota', 'rav4', 2005);

let carArrays = {};
carArrays[car1.year] = [car1, car2, car3];
carArrays[car4.year] = [car4, car5, car6];

console.log(carArrays);

最佳答案

  1. What javascript rules allow you to do this?

carArrays 是一个对象(由 {} 表示)。这意味着它将有键值对,其中一个键指向一个特定的值。但是,您需要定义这些键值对是什么。目前您的对象是空的,但是,您可以通过多种方式向其添加键值对:

直接:

let carArrays = {
"myKey": ["element1", "element2"]
}

使用 dot-notation :

let carArrays = {};
carArrays.myKey = ["element1", "element2"];

... 或使用 bracket notation :

let carArrays = {};
carArrays["myKey"] = ["element1", "element2"];

上述所有添加键值对的方法都做同样的事情 - 它们将 "myKey" 的键添加到 carArrays 对象,其值为元素数组 (["element1", "element2"])。

关于方括号表示法 需要注意的是,它允许您将键传递给对象以定义它,所以像这样的东西也是有效的:

let carArrays = {};
let theKey = "myKey";
carArrays[theKey] = ["element1", "element2"]

因此,当您编写代码时:

let carArrays = {};
carArrays[car1.year] = [car1, car2, car3];

...您正在使用括号表示法carArrays 设置一个key 为存储在 中的值car1.year(即:1999)及其指向汽车元素数组的值([car1, car2, car3])。

  1. I thought [] means array. If carArrays is now a map why are square brackets being used to index into it?

如上所述,它不仅用于索引数组,还用于获取/设置对象的值。这被称为 bracket notation .如果你深入研究 Javascript,你会发现数组实际上只是对象,所以当你在数组上使用 [] 时,你实际上又在使用括号表示法。

  1. Is my interpretation correct about carArrays becoming a map? Or is this still considered an object with keys '1999' and '2005'?

Javascript 有两种主要方式将数据表示为键值对关系。一种方法是使用 Map类,另一种方法是使用对象 {}new Map{} 都允许您保留存储键值对关系的数据结构。在您的代码中,您使用的是对象 ({}),而不是 Map。此外,在过去,我们并不总是在 Javascript 中拥有 Map 类,因为它只是一个相对较新的添加(对 ES6),对象({} ) 主要被用来代替。要了解 Map 和 Object 之间的主要区别,您可以查看 this answerthis comparison from MDN .

因此,对于您的代码,它仍然被视为具有键“1999”和“2005”的对象(因为您没有在代码中的任何位置创建 new Map() 对象,而是正在使用常规对象 ({}) 来存储您的键值对。)

关于javascript - 试图理解看起来像 map 功能的对象的 Javascript 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56919329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com