我有像这样的JavaScript数组
var arr = [];
arr['5u'] = 250;
arr['1u'] = 120;
arr['7u'] = 670;
arr['2u'] = 210; //<-----
arr['9u'] = 850; //<-----
arr['8u'] = 129; //<-----
arr['3u'] = 382;
arr['6u'] = 391;
arr['4u'] = 432;
我想在上面的数组中只获得从3到5的索引开始的3个元素。我该怎么办?结果应该是这样的。
[210,850,129];
我尝试将其作为 arr [3] 进行访问,并且它正在显示 undefined 。现在我怎么能这样做?
我想像这样使用循环访问值
for(var i=3; i<6; i++)
{
console.log(arr[i]);
}
答案 0 :(得分:2)
我建议你使用这种技术
arr[0] = [250, '5u'];
arr[1] = [120, '1u'];
arr[2] = [670, '7u'];
arr[3] = [210, '2u'];
arr[4] = [850, '9u'];
arr[5] = [129, '8u'];
arr[6] = [391, '3u'];
arr[7] = [432, '6u'];
现在你可以像这样排序
arr.sort(function(a, b) {return b[0] - a[0]});
并访问任何类似
的元素console.log(arr[3][0]);
console.log(arr[4][0]);
console.log(arr[5][0]);
答案 1 :(得分:1)
由于您已为阵列提供了密钥,因此您需要使用arr['2u']
,arr['9u']
和arr['8u']
进行访问。您无法使用arr [3]进行访问,因为它不与这些索引一起存储。
答案 2 :(得分:1)
为了绝对安全,您需要并行数据结构。你所描述的是地图而不是数组。问题是地图是无序的,因此您不能依赖于放在其中的元素的顺序。您需要一个随附的数组来跟踪订单。请参阅:Ordered hash in JavaScript
答案 3 :(得分:1)
我会以这种方式填充数组:
var arr = [],
map = {},
append = function(key, value) {
return arr[map[key] = arr.length] = [key, value];
}
append('5u', 250);
append('1u', 120);
append('7u', 670);
append('2u', 210); //<-----
append('9u', 850); //<-----
append('8u', 129); //<-----
append('3u', 382);
append('6u', 391);
append('4u', 432);
map
结构允许您按标识符查找元素。
通过这种方式,您可以使用arr.slice()
:
arr.slice(3, 6); // [['2u', 210], ['9u', 850], ['8u', 129]]
对此进行排序也将保持键 - 值对:
arr.sort(function(a, b) {
return a[1] - b[1]; // or reversed, whatever
});
请注意,排序后您必须重建地图;如果你真的想要那个结构那就好了。
答案 4 :(得分:1)
您可以为以下阵列创建自己的原型功能,
Array.prototype.selectIndex = function (n) {
var count = 0;
for (var i in arr) {
if (count == n) val = arr[i];
count++;
}
console.log(val);
};
您只需输入如下所示的索引编号,
arr.selectIndex(3);
arr.selectIndex(4);
arr.selectIndex(5);
查看DEMO
答案 5 :(得分:1)
You can use this way also
var arr = {};
arr[0] = {'key':'5u','val':250};
arr[1] = {'key':'1u','val':120};
arr[2] = {'key':'7u','val':670};
arr[3] ={'key':'2u','val':210}; //<-----
arr[4] ={'key':'9u','val':850}; //<-----
arr[5] ={'key':'8u','val':129}; //<-----
arr[6] ={'key':'3u','val':382};
arr[7] = {'key':'6u','val':391};
arr[8] ={'key':'4u','val':432};
console.log(arr[3]['val']);
console.log(arr[4]['val']);
console.log(arr[5]['val']);
答案 6 :(得分:0)
试试此代码
var arr = [], arr2 = [];
arr['5u'] = 250;
arr['1u'] = 120;
arr['7u'] = 670;
arr['2u'] = 210; //<-----
arr['9u'] = 850; //<-----
arr['8u'] = 129; //<-----
arr['3u'] = 382;
arr['6u'] = 391;
arr['4u'] = 432;
var count = 0;
for(var i in arr){
if(count == 3 || count == 4 || count == 5)
arr2.push(arr[i]);
count++;
}
console.log(arr2)
答案 7 :(得分:0)
var len = arr.length;
var data=new array();
var i=0;
while (len--){
if(i==3) {
data[i-3]=arr[i];
}
i++;
if(i==5){
break;
}
}
现在,您的数据数组将包含所需的值