我想使用数组来查找给定键的值。 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);
但两者都会导致零长度数组。我究竟做错了什么?即如何查找一个对象/字符串/无论给定一个浮点值?
在使用必须查找值时,有一个关于常见操作的参考指南会很棒,例如:
答案 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
对象。会很有用。