A. javaScript中的數組、集合及效率
數組是JavaScript提供的一個內部對象 它是一個標準的集合 我們可以添加(push) 刪除(shift)裡面元素 我們還可以通過for循環遍歷裡面的元素 那麼除了數組我們在JavaScript里還可以有別的集合嗎?
由於JavaScript的語言特性 我們可以向通用對象動態添加和刪除屬性 所以Object也可以看成是js的一種特殊的集合 下面比較一下Array和Object的特性:
Array:
新建:var ary = new Array(); 或 var ary = [];
增加:ary push(value);
刪除:delete ary[n];
遍歷:for ( var i= ; i < ary length ; ++i ) ary;
Object:
新建:var obj = new Object(); 或 var obj = {};
增加:obj[key] = value; (key為string)
刪除:delete obj[key];
遍歷:for ( var key in obj ) obj[key];
知凳從上面的比較可以看出Object完全可以作為一個集合來使用 在使用Popup窗口創建無限級Web頁菜單( )中我介紹過Eric實現的那個__MenuCache__ 它也就是一個模擬的集合對象
如果我們要在Array中檢索出一個指定的值 達內培訓我們需要遍歷整個數組:
var keyword = ;
for ( var i= ; i < ary length ; ++i )
{
if ( ary == keyword )
{
// todo
}
}
而我們在Object中檢索一個指定的key的條目 只需要是要使用:
var key = ;
var value = obj[key];
// todo
Object的這個特性可以用來高效的檢索Unique的字元串集合 遍歷Array的時間復雜度是O(n) 而遍歷Object的時間復雜度是O( ) 雖腔猛棚然對於 次集合的for檢索代價也就幾十ms 可是如果是 * 次檢索或更多 使用Object的優勢一下就體現出來了 在此之前我做了一個mapping 把 個Unique的字元mapping到 個字元串數組上 耗時 s!後來把for遍歷改成了Object模擬的集合的成員引伍則用 同樣的數據量mapping 耗時僅 s!!!
lishixin/Article/program/Java/JSP/201311/19256
B. js數組和集合的區別是什麼
看語境吧,這里的集合是是dom對象,和html dom樹綁定的,html的元素發生變化,這個集合也會變化。數組的意思就是傳統的數組的意思
C. js中數組和對象循環遍歷
數組:
var arr = [『a』,『b』,'c'];
for (let i = 0;i<arr.length;i++){
console.log(i,arr[i])
};
對象:
var person = { name:'tom',age:'29',sex:'男『};
// 對象如果要用for循環來遍歷,需要先有Object.key()的方法來拿到手殲可迭代(遍歷)的私有屬性名的集合(數組)
var keys = Object.keys(person);
for (let i = 0;i<keys.length;i++){
console.log(keys[i]+":"+person[keys[i]]);
};
數組:
for(let key in arr){
// 值得注意的是,key為數組的索引,如若需要獲取屬性的值,則需要使用數組加索引下標 的形式來獲取
console.log(key,arr[key]);
}
對象:
for(let key in obj){
// 值得注意的是,key為對象的鍵名,鍵值要以obj[key]的方式來獲取
console.log(key,obj[key]);
}
數組:
for(let value of arr){
//值得注意的是,for...of跟for...in是不一樣的,for...in遍歷的是數組的索引,for...of遍歷的是數組的值
console.log(value);
}
對象:
for...in是不能單獨來遍歷一個對象的,會報錯。
如果對象是一個類數組對象,那用array.from方法轉成一個數組就可以用for...of來遍歷了。
或者結合Object.keys()方法來使用
for(let key of Object.keys(obj)){
// for...of遍歷輸出的也是鍵名
console.log(key,obj[obj]);
}
數組:
forEach()方法遍歷數組是沒有返回值
值得注意的是數組中有幾項,那麼傳遞進去的匿名回調函數拍啟就需要執行幾次;
arr.forEach((item,index,arr)=>{
console.log(item,index,arr)
)
// 其中item是數組中的當前項,index是數組中的當前下標,arr是原始數組
對象:
原則上forEach是用來遍歷數組的,不能遍歷對象,但是可以用Object.getOnwPropertyNames()方法來使得對象能被forEach遍歷出來。
Object.getOnwPropertyNames()返回一個數組,成員畢賀沖是參數對象自身全部屬性的屬性名,不管該屬性是否能被遍歷。
Object.getOnwPropertyNames(obj).forEach((item,index,arr)=>{
console.log(item,index,obj[item])
})
D. javascript中如何獲取java中集合或數組。
解決思路抄:
將襲List<String> 轉成json,傳到界面。js中使用var arr = eval(『${list}');將list轉成js數組。
參考代碼如下:
var keyList = eval('${keysList}');
var values = $("#paramsValues").val();
var noSet = [];
for(var i=0;i<keyList.length;i++){
if(values.indexOf(keyList[i])==-1){
noSet.push(keyList[i]);
}
}
E. JS中幾種常見的集合
Array數組
set集合(存儲的元素是有序不重復的)
Map集合(存儲的是鍵值對的形式)
F. 關於JS裡面取得一個數組的集合的問題
大致寫了一下:回答
<html>
<head>
<title></title>
</head>
<script src="http://libs..com/jquery/1.9.0/jquery.js"></script>
<script>
var p_gather = new Array();
$(function () {
$("p").each(function () {
p_gather.push($(this).html() == "" ? "空" : $(this).html())
});
alert(p_gather);
})
</script>
<body>
<div>
<p>1</p>
<p>2</p>
<p></p>
<p>3</p>
<p>4</p>
<p>5</p>
</div>
</body>
</html>
G. js裡面array是數組還是集合
數組
js沒有集合,應該說不叫集合。
js其實只有對象,數組也是一種特殊的對象。
H. js 取數組中某個對象的集合
vararr=data.items;
letnewArr=arr.filter((item,index,arr)=>{
returnitem.id=2//返回一個滿足你過濾條件的新數組
});
//newArr就是你想要專的結果屬