ホームページ  >  記事  >  ウェブフロントエンド  >  js配列操作例解析

js配列操作例解析

小云云
小云云オリジナル
2018-03-26 15:20:371379ブラウズ

この記事では、主に js 配列の操作例の分析をコードの形式で共有します。これが皆様のお役に立てれば幸いです。

shift: 元の配列の最初の項目を削除し、削除された要素の値を返します。配列が空の場合は、未定義を返します

var a = [1,2,3,4,5];   
var b = a.shift(); //a:[2,3,4,5] b:1

unshift: 元の配列の先頭にパラメータを追加し、配列の長さを返します

var a = [1,2,3,4,5];   
var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5] b:7

注: IE6.0 でのテスト戻り値は常に不定であり、FF2.0 でのテスト戻り値は 7 であるため、このメソッドの戻り値は信頼できません。値が必要な場合は、この方法の代わりにスプライスを使用できます。

pop: 元の配列の最後の項目を削除し、削除された要素の値を返します。配列が空の場合は、未定義を返します

var a = [1,2,3,4,5];   
var b = a.pop(); //a:[1,2,3,4] b:5

push: 元の配列の末尾にパラメータを追加し、配列の長さを返します

var a = [1,2,3,4,5];   
var b = a.push(6,7); //a:[1,2,3,4,5,6,7] b:7

concat: 元の配列にパラメータを追加して構成される新しい配列を返します

var a = [1,2,3,4,5];   
var b = a.concat(6,7); //a:[1,2,3,4,5] b:[1,2,3,4,5,6,7]

splice(start, deleteCount, val1, val2,...): 削除 deleteCount開始位置からの項目、および挿入 val1、val2、...

var a = [1,2,3,4,5];   
var b = a.splice(2,2,7,8,9); //a:[1,2,7,8,9,5] b:[3,4]   
var b = a.splice(0,1); //同shift   
a.splice(0,0,-2,-1); var b = a.length; //同unshift   
var b = a.splice(a.length-1,1); //同pop   
a.splice(a.length,0,6,7); var b = a.length; //同push

reverse: 配列を反転します

var a = [1,2,3,4,5];   
var b = a.reverse(); //a:[5,4,3,2,1] b:[5,4,3,2,1]

sort(orderfunction): 指定されたパラメータに従って配列を並べ替えます

var a = [1,2,3,4,5];   
var b = a.sort(); //a:[1,2,3,4,5] b:[1,2,3,4,5]

slice (start, end ): 元の配列の指定された開始添え字と終了添え字の間の項目で構成される新しい配列を返します

var a = [1,2,3,4,5];   
var b = a.slice(2,5); //a:[1,2,3,4,5] b:[3,4,5]

join(separator): 区切り文字を使用して、配列の要素を文字列にグループ化します。区切り文字、省略 その場合は、デフォルトでカンマを区切り文字として使用します

var a = [1,2,3,4,5];   
var b = a.join("|"); //a:[1,2,3,4,5] b:"1|2|3|4|5"

配列は、JavaScript によって提供される標準のコレクションです。内部の要素を追加 (プッシュ) したり、削除 (シフト) したりできます。 for ループも使用できます。 内部の要素をトラバースするので、配列以外にも JavaScript で他のコレクションを使用できますか?

JavaScript の言語機能により、一般的なオブジェクトに対して属性を動的に追加したり削除したりできます。したがって、Object は JS の特別なコレクションとみなすこともできます。配列とオブジェクトの特性を比較してみましょう:

  //Array:  
  
/*新建:*/var ary = new Array(); 或 var ary = [];   
/*增加:*/ary.push(value);   
/*删除:*/delete ary[n];   
/*遍历:*/for ( var i=0 ; i < ary.length ; ++i ) ary[i];  
  
  //Object:  
  
/*新建:*/var obj = new Object(); 或 var obj = {};   
/*增加:*/obj[key] = value; (key为string)   
/*删除:*/delete obj[key];   
/*遍历:*/for ( var key in obj ) obj[key];

上記の比較から、ポップアップ ウィンドウを使用して無限の Web ページ メニューを作成する際の Eric の実装を紹介しました。 ) __MenuCache__ も、シミュレートされたコレクション オブジェクトです。

配列内の指定された値を取得したい場合は、配列全体を走査する必要があります:

var keyword = ;   
  for ( var i=0 ; i < ary.length ; ++i )   
  {   
  if ( ary[i] == keyword )   
  {   
  // todo   
  }   
  }

オブジェクト内の指定されたキーを持つエントリを取得するには、次を使用するだけです:

var key = &#39;&#39;;   
  var value = obj[key];   
  // todo

 Object的这个特性可以用来高效的检索Unique的字符串集合,遍历Array的时间复杂度是O(n),而遍历Object的时间复杂度是O(1)。虽然对于10000次集合的for检索代价也就几十ms,可是如果是1000*1000次检索或更多,使用Object的优势一下就体现出来了。在此之前我做了一个mapping,把100个Unique的字符mapping到1000个字符串数组上,耗时25-30s!后来把for遍历改成了Object模拟的集合的成员引用,同样的数据量mapping,耗时仅1.7-2s!!! 
对于集合的遍历效率(从高到低):var value = obj[key]; > for ( ; ; ) > for ( in )。效率最差的就是for( in )了,如果集合过大,尽量不要使用for ( in )遍历。

相关推荐:

JS数组去重方法总结

js数组常用的一些排序法

JS数组添加元素方法总结

以上がjs配列操作例解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。