javascript - 如何解释 float 组索引?

标签 javascript arrays indexing floating-point

我找不到这方面的任何信息,但假设我有

var arr = [1, 2, 3];
var x = arr[1.5];

我假设 Javascript 将 floor 索引并返回索引 1 处的项目,但似乎至少在 Chrome 中它只返回 undefined

这是正确的吗?我找不到任何标准或文档来证实这一点。如果是这样,实际上真的很不方便,因为我假设向下舍入行为允许您将 [0, n) 范围内的任何 float 传递给数组索引,但如果您进行 float 学运算,似乎您会默默地破坏数组不是圆形的。

编辑:如果有人维护一份 javascript 陷阱列表,请添加此列表。现在我必须检查 10k 行 javascript 代码,看看我所做的这个假设在什么地方悄悄地导致了错误!

最佳答案

根据 MDN: Array ,数组项实际上是属性,属性由字符串标识。

因此,访问 arr[1.5] 与访问 arr['1.5'] 是一样的,而 Firefox 实际上就是这样做的。

这段代码:

var x = [0,1,2,3,4,5];

x[1.5] = 42;

alert(x);
alert(x['1.5']);
alert(x['1.50']);

输出:

 0, 1, 2, 3, 4, 5
 42
 undefined

因此,使用浮点值访问的项目是由数字的字符串表示形式标识的属性。请注意,使用 '1.50' 访问项目与使用 '1.5' 访问项目不同,因此索引不会转换为数字。

我也在 Internet Explorer 和 Chrome 中对此进行了测试,它们都与 Firefox 一样。

关于javascript - 如何解释 float 组索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6649283/

相关文章:

javascript - 使用 HTML 5 Canvas 自动滚动

javascript - 设置 Ember.TextField 的 ID

javascript - 为什么将 event.target 存储在变量中?

javascript - JavaScript .prototype 如何工作?

arrays - 如何从 C 语言的输入中读取字符数?

mysql - 为了更快的查询应该创建多少索引

java - 如何打印数组中的某个数字?

Python 在 C 中生成的字符串

python - 如何在 pandas.cut 中获得合适的级别表示?

sql - 如果索引不存在,Drop_existing 会抛出错误