使用float作为数组键

时间:2016-08-06 07:45:06

标签: javascript

我想使用数组来查找给定键的值。 AFAIK,将float转换为字符串应该是可能的,就像下面的第二个例子:(jsfiddle

arr = [];
arr[1.3] = "One point three";
console.log(arr.length);

arr = [];
arr["1.3"] = "One point three";
console.log(arr.length);

但两者都会导致零长度数组。我究竟做错了什么?即如何查找一个对象/字符串/无论给定一个浮点值?

在使用必须查找值时,有一个关于常见操作的参考指南会很棒,例如:

  • 获取一个元素,给定一个浮动键
  • 获取元素总数
  • 测试是否存在浮动键
  • 添加新的浮动键/值对
  • 以及其他人,例如循环遍历所有键/值

4 个答案:

答案 0 :(得分:1)

Array的索引必须是整数才能将其添加为数组项。如果您将传递给[]而不是整数,则会将其添加为property

arr = [];
arr[1.3] = "One point three";

console.log(arr.length);

console.log(arr.hasOwnProperty('1.3'));

console.log(Object.keys(arr).length);

答案 1 :(得分:1)

我可能是错的,但似乎你正试图创造一个字典。我会像其他人建议的那样使用一个对象。

var arr = {
    1.2: 'One Point Three'
}

arr[1.2] or arr["1.2"] // One Point Three

or you can use es6 Map

var arr = new Map()
    arr.set(1.3, "One Point Three")
    arr.get(1.3) // One Point Three 
    arr.size // 1 

答案 2 :(得分:1)

数组采用整数值作为索引。

您应该使用Object进行此类映射。

var arr = {};
arr[1.3] = "One point three";
console.log(Object.keys(arr).length);

答案 3 :(得分:0)

Suren的答案是第一个,并且给了我建立操作参考所需的内容:

插入项目

var x = 1.3;

// Not actually an array! arr.length will be undefined. Although
// an array could still be used, it seems
var arr = {}; 

arr[x] = "One point three";

计算项目:

Object.keys(arr).length

测试密钥是否存在:

arr.hasOwnProperty(x)

获取元素

arr[x]

循环键/值对

for (key in arr)
{
    var value = arr[key];
}

有趣的怪癖

+1给James Emanon好几点:首先,显示查找不需要字符串:

arr[1.3] // works

其次,可以将数组定义为如下对象:

arr = {
    1.3: "One point three"
};

第三,ES6提供了一个Map对象。会很有用。