我有一个javascript对象数组。我使用jQuery。获取稀疏JavaScript数组的第一个元素
我该如何获得数组中的第一个元素?我不能使用数组索引 - 因为我在将对象添加到数组时分配了每个元素索引。所以索引不是0,1,2等。
只需要获取数组的第一个元素?
我有一个javascript对象数组。我使用jQuery。获取稀疏JavaScript数组的第一个元素
我该如何获得数组中的第一个元素?我不能使用数组索引 - 因为我在将对象添加到数组时分配了每个元素索引。所以索引不是0,1,2等。
只需要获取数组的第一个元素?
如果不使用顺序编号的元素,你会通过,直到你遇到第一个具有循环:
var firstIndex = 0;
while (firstIndex < myarray.length && myarray[firstIndex] === undefined) {
firstIndex++;
}
if (firstIndex < myarray.length) {
var firstElement = myarray[firstIndex];
} else {
// no elements.
}
或某些等价傻建设。这会为您提供第一个项目的索引,您可能会也可能不会关心它。
如果这是您需要经常执行的操作,则应该对当前的第一个有效索引保留一个旁视引用,因此每次都变为O(1)操作而不是O(n)。如果您经常需要遍历真正稀疏的数组,请考虑另一个数据结构,例如将对象与其保持一致,以将有序结果反向映射到索引,或适合您的数据的东西。
filter
方法适用于稀疏数组。
var first = array.filter(x => true)[0];
-1。不正确;这并没有回答这个问题。 OP希望第一个“有效”项目,无论它在哪里(不一定是零)。 'shift'只会将元素0处的任何东西拉开,包括'undefined'。 – 2010-08-25 23:11:36
我的错误,编辑替代方案,而不是添加可能误导他人的另一个答案。 – 2010-08-25 23:54:54
@GeorgeJempty可能是因为它使用了“过滤器”,所以我认为“足够接近”,但你是对的。我的编辑过于激烈。 – aleclarson 2018-02-21 22:50:42
如果您发现自己需要对数组进行大量操作,您可能会对Underscore库感兴趣。它提供了实用方法用来操作数组,例如compact:
var yourArray = [];
yourArray[10] = "foo";
var firstValue = _.compact(yourArray)[0];
但是,它听起来就像你正在做的事情奇怪,当你构建你的阵列。也许Array.push会帮助你?
你有没有考虑:
function getFirstIndex(array){
var result;
if(array instanceof Array){
for(var i in array){
result = i;
break;
}
} else {
return null;
}
return result;
}
?
并且以这种方式来获得最后元素数组中:
function getLastIndex(array){
var result;
if(array instanceof Array){
result = array.push("");
array.pop;
}
} else {
return null;
}
return result;
}
无论这些用途的jQuery。
Object.keys(array)[0]
返回稀疏数组中第一个元素的索引(String
表单)。
var array = [];
array[2] = true;
array[5] = undefined;
var keys = Object.keys(array); // => ["2", "5"]
var first = Number(keys[0]); // => 2
var last = Number(keys[keys.length - 1]); // => 5
,我也面临着类似的问题而感到惊讶,没有人考虑以下几点:
var testArray = [];
testArray [1245]= 31;
testArray[2045] = 45;
for(index in testArray){
console.log(index+','+testArray[index])
}
以上会产生
1245,31
2045,45
如果需要的话,你可以以后存在第一次迭代,如果所有这些都是必需的,但通常我们需要知道数组中的哪个位置开始。
这是一个建议与ES5方法Array#some
。
该代码获取第一个非稀疏元素和索引。迭代在回调返回true
立即停止:
var a = [, , 22, 33],
value,
index;
a.some(function (v, i) {
value = v;
index = i;
return true;
});
console.log(index, value);
您也可以使用这种可循环使用开源array-first component返回给定数组的第一个元素。
例子:您正在使用的则数组索引什么
first([1, 2, 3]) // => 1
first(['a', 'b', 'c']) // => 'a'
他们询问**稀疏**数组,而不是普通数组。 – aleclarson 2017-12-26 14:52:42
? – 2010-08-25 23:07:39