我有一個數組,我只想刪除一個元素,但沒有重新排序鍵。有沒有簡單的方法,而不使用刪除或重建整個陣列?從js數組中刪除值而不重新排序鍵
或者也可以在刪除後清理掉未定義的值,再次固定長度。
var array = ["valueone", "valuetwo"];
console.dir(array); // keys 0 and 1
array.splice(0, 1);
console.dir(array); // key 1 is now 0, do not want!
我有一個數組,我只想刪除一個元素,但沒有重新排序鍵。有沒有簡單的方法,而不使用刪除或重建整個陣列?從js數組中刪除值而不重新排序鍵
或者也可以在刪除後清理掉未定義的值,再次固定長度。
var array = ["valueone", "valuetwo"];
console.dir(array); // keys 0 and 1
array.splice(0, 1);
console.dir(array); // key 1 is now 0, do not want!
可以delete
數組的元素:
a = ['one', 'two'];
delete a[0];
// a is now [undefined, 'two'];
可替代地,設置a[0]
明確地undefined
。
請注意,系統會自動維護一個數組參數.length
。如果您有意將其設置爲一個較大的數字,你會只得到undefined
值的整個負載爲丟失的鑰匙:
a.length = 10;
// a is now [undefined, 'two', undefined x 8]
如果這些語義不接受你,那麼你應該考慮使用Object
代替。這將保留你的鑰匙,也許更有效率,但你失去了財產。
難道你不能明確地將值設置爲undefined或null或空字符串。你想達到什麼目的?
var arr = ['aaaa','bbb','ccc','ddd'];
arr[0]= undefined;
//or
arr[0]= null;
///or
arr[0]= "";
arr.length; <--- 4
您可以使用javascript的delete
關鍵字。
delete array[index];
不幸的是,這裏面創建數組的
var arr = ['pie', 'cake', 'fish'];
delete arr[1];
arr; // ['pie', undefined, 'fish']
的undefined
指數你也可以這樣做:
var arr = [9,8,7,6];
arr[1] = null;
arr; // [9,null,7,6]
arr.length; // 4
var i = -1;
while(++i < arr.length){
if(arr[i] && typeof(arr[i] === "number")){
alert(arr[i]);
}
}
或者,如果你不需要使用數組,你可以使用一個物體,使一切都變得更容易:
var obj = {
0: "first",
1: "second",
2: "third"
};
delete obj[1];
obj; // {0: "first", 2: "third"}
for(var i in obj){
alert(obj[i]);
}
要獲得一個物體的長度:
getLength = function(obj){
var i = 0, l = 0;
for(i in obj){
l++;
}
return l;
}
getLength(obj); // 3
但請記住,通過date of creation
對象進行排序的指標,叫不上名字。不過,這不應該導致路障。
將對象按字母順序的排序指標:
sortObject = function(){
var arr = [], i;
for(i in this){
arr.push({index:i,content:this[i]});
delete this[i];
}
arr.sort();
for(i in arr){
var item = arr[i];
this[item.index] = item.content;
}
return this; // make chainable
}
var obj = {
acronym: "OOP",
definition: "Object-Oriented Programming",
article: "http://wikipedia.org/OOP"
};
sortObject.apply(obj); // indices are "acronym", "article", "definition"
希望這有助於
驚人的長度。這幫了很多,謝謝! – Nuoun 2013-03-06 00:06:42
@Nuoun歡迎您:)很高興它幫助! – 2013-03-06 01:53:02
你有什麼反對使用刪除? – j08691 2013-03-05 21:54:12
不知道我明白你是什麼意思的「刪除」,但你不能只是使用一個像聲明數組[索引] = undefined;或array [index] = null; ? – 2013-03-05 21:54:25
你爲什麼想這樣做? – AD7six 2013-03-05 21:56:01