我有一個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