在 JavaScript 数组中按值获取索引
get index by value in javascript array
阅读打字稿中的"枚举",我看到这段代码编译成javascript。
var Season = [];
Season[Season["Spring"] = 0] = "Spring";
Season[Season["Summer"] = 1] = "Summer";
Season[Season["Fall"] = 2] = "Fall";
Season[Season["Winter"] = 3] = "Winter";
console.log(Season.Spring); // 0
console.log(Season[0]); // Spring
而且,如果我在第一行将季节更改为 {} 空 objext,这也有效并且有意义。我不知道发生了什么事听到。这是怎麽?
编辑:是的。这不是编译器生成的。编译器使用空对象。但是如果我将其更改为空数组。它仍然有效。我的问题是为什么数组也很好用。起初我的问题包括两个版本,但有人编辑了问题并删除了对象使用版本。
这个:
Season[Season["Spring"] = 0] = "Spring";
Season[Season["Summer"] = 1] = "Summer";
Season[Season["Fall"] = 2] = "Fall";
Season[Season["Winter"] = 3] = "Winter";`
在 Season 对象中创建八个属性:
Season["Spring"] = 0;
Season["Summer"] = 1;
Season["Fall"] = 2;
Season["Winter"] = 3;
Season[0] = "Spring";
Season[1] = "Summer";
Season[2] = "Fall";
Season[3] = "Winter";
在该赛季之后可以申请:
- 通过文本获取其索引(前四个属性)
- 通过索引获取其文本(后四个属性)
看起来有人只是想让季节成为一张双向地图。
换句话说,您可以按数字索引或其字符串值查找项目。
var season1 = Season[1]; // season1 == 'Summer'
var summerIndex = Season['Summer']; // summerIndex == 1
我将解决您的问题,即如果您将代码块中的第一个语句更改为var Season = [];
,以便Season
是数组而不是空对象,为什么它仍然有效。数组也是对象,你可以在 JavaScript 中的对象上设置任何你喜欢的属性,甚至是数组(只要你不通过 Object.freeze
运行对象)。因此,表达式 Season["Spring"] = 0
只是在 Season
对象上设置一个名为"Spring"的属性,您可以使用 Season["Spring"]
或Season.Spring
访问该属性,就像在任何其他对象上一样。
如果我在第一行将季节更改为 {} 空 objext,这也有效并且有意义
我有一些关于枚举的文档,但你的问题是为什么:
Season = [];
而不是
Season = {};
当实际上以下打字稿:
enum Season {
Spring,
Summer,
Fall,
Winter
}
生成 JavaScript:
var Season;
(function (Season) {
Season[Season["Spring"] = 0] = "Spring";
Season[Season["Summer"] = 1] = "Summer";
Season[Season["Fall"] = 2] = "Fall";
Season[Season["Winter"] = 3] = "Winter";
})(Season || (Season = {}));
正如你所看到的Season = {}
.所以这对你来说应该是有意义的。
附注:
不是您的问题,但是,如果您对此处涵盖Season[Season["Spring"] = 0] = "Spring";
感到好奇。
- 对于关于es6-获取索引如何
- AngularJS ng选项获取索引
- Javascript点击即可获取索引
- 按值获取索引
- 在Chrome上获取z索引值时存在差异
- 循环对象以获取索引值
- 快速从 2D 数组获取索引,无需迭代 jquery
- 无法从循环数据属性的内容中获取索引的值
- 在 JavaScript 数组中按值获取索引
- 获取索引处字符的 ANSI 颜色
- 我知道如何获取 z 索引,但是有没有办法在页面上获取绝对 Z(数字,而不是 AUTO)
- 使用自定义Knockout映射时获取索引值
- 如何在不计算隐藏元素的情况下获取索引
- 正在从对象获取索引
- 如何从父元素获取索引值
- 从多维数组中获取索引
- 如何检测当前输入文本'使用jquery从输入文本数组中获取s索引
- 如何获取索引元素
- 在javascript的多维数组中获取索引
- 在javascript foreach循环中获取索引