| | 224 | |
|---|
| | 225 | |
|---|
| | 226 | /** |
|---|
| | 227 | * 同じデータで構成された配列を作成します |
|---|
| | 228 | * |
|---|
| | 229 | * @param param 配列にセットする値 |
|---|
| | 230 | * @param len 配列の数 |
|---|
| | 231 | * @return 新しい配列を返します |
|---|
| | 232 | * @author michi at seyself.com |
|---|
| | 233 | */ |
|---|
| | 234 | public static function identicalArray( param:* , len:uint ):Array |
|---|
| | 235 | { |
|---|
| | 236 | var a = []; |
|---|
| | 237 | for(var i=0;i<len;i++) a.push(param); |
|---|
| | 238 | return a; |
|---|
| | 239 | } |
|---|
| | 240 | |
|---|
| | 241 | /** |
|---|
| | 242 | * 連続する数値で構成された配列を作成します |
|---|
| | 243 | * |
|---|
| | 244 | * @param len 作成する配列の要素数 |
|---|
| | 245 | * @param firstValue 配列の最初の要素に含まれる数値 |
|---|
| | 246 | * @param step 1要素ごとに加算(減算)されていく数値 |
|---|
| | 247 | * @return 新たしい配列を返します |
|---|
| | 248 | * @author michi at seyself.com |
|---|
| | 249 | */ |
|---|
| | 250 | public static function numericArray(len:int, firstValue:Number=0, step:Number=1.0 ):Array |
|---|
| | 251 | { |
|---|
| | 252 | var a = new Array(len); |
|---|
| | 253 | return a.map(function(v:Number, i:int, a:Array) { return firstValue+i*step; }); |
|---|
| | 254 | } |
|---|
| | 255 | |
|---|
| | 256 | /** |
|---|
| | 257 | * 配列内の要素がすべて同じクラスのインスタンスであるかを確認します |
|---|
| | 258 | * |
|---|
| | 259 | * @param array 配列 |
|---|
| | 260 | * @param theClass 判定対象となるクラス。指定がない場合は配列の1つ目の要素のコンストラクタから判定します。 |
|---|
| | 261 | * @return 異なるクラスのインスタンスが含まれている場合はfalseが返されます |
|---|
| | 262 | * @author michi at seyself.com |
|---|
| | 263 | */ |
|---|
| | 264 | public static function instanceOfEquals( array:Array, theClass:Class=null ):Boolean |
|---|
| | 265 | { |
|---|
| | 266 | var n:uint = array.length; |
|---|
| | 267 | |
|---|
| | 268 | if (n == 0) throw new ArgumentError("空の配列をチェックすることはできません。"); |
|---|
| | 269 | |
|---|
| | 270 | theClass = theClass || array[0].constructor; |
|---|
| | 271 | |
|---|
| | 272 | for (var i:int = 0; i < n; i++ ) |
|---|
| | 273 | if ( !(array[i] is theClass) ) return false; |
|---|
| | 274 | return true; |
|---|
| | 275 | } |
|---|
| | 276 | |
|---|
| | 277 | /** |
|---|
| | 278 | * 数値のみで構成される配列内の要素すべてに加算します |
|---|
| | 279 | * |
|---|
| | 280 | * @param numericArray 数値のみで構成された配列 |
|---|
| | 281 | * @param value 加算する数値 |
|---|
| | 282 | * @return 新たしい配列を返します |
|---|
| | 283 | * @author michi at seyself.com |
|---|
| | 284 | */ |
|---|
| | 285 | public static function addNumber( numericArray:Array, value:Number ):Array |
|---|
| | 286 | { |
|---|
| | 287 | return numericArray.map(function(v:Number, i:int, a:Array) { return v + value; } ); |
|---|
| | 288 | } |
|---|
| | 289 | |
|---|
| | 290 | /** |
|---|
| | 291 | * 数値のみで構成される配列内の要素すべてから減算します |
|---|
| | 292 | * |
|---|
| | 293 | * @param numericArray 数値のみで構成された配列 |
|---|
| | 294 | * @param value 減算する数値 |
|---|
| | 295 | * @return 新たしい配列を返します |
|---|
| | 296 | * @author michi at seyself.com |
|---|
| | 297 | */ |
|---|
| | 298 | public static function subtractNumber( numericArray:Array, value:Number ):Array |
|---|
| | 299 | { |
|---|
| | 300 | return numericArray.map(function(v:Number, i:int, a:Array) { return v - value; } ); |
|---|
| | 301 | } |
|---|
| | 302 | |
|---|
| | 303 | /** |
|---|
| | 304 | * 数値のみで構成される配列内の要素すべてに乗算します |
|---|
| | 305 | * |
|---|
| | 306 | * @param numericArray 数値のみで構成された配列 |
|---|
| | 307 | * @param value 乗算する数値 |
|---|
| | 308 | * @return 新たしい配列を返します |
|---|
| | 309 | * @author michi at seyself.com |
|---|
| | 310 | */ |
|---|
| | 311 | public static function multipleNumber( numericArray:Array, value:Number ):Array |
|---|
| | 312 | { |
|---|
| | 313 | return numericArray.map(function(v:Number, i:int, a:Array) { return v * value; } ); |
|---|
| | 314 | } |
|---|
| | 315 | |
|---|
| | 316 | /** |
|---|
| | 317 | * 数値のみで構成される配列内の要素すべてに除算します |
|---|
| | 318 | * |
|---|
| | 319 | * @param numericArray 数値のみで構成された配列 |
|---|
| | 320 | * @param value 除算する数値 |
|---|
| | 321 | * @return 新たしい配列を返します |
|---|
| | 322 | * @author michi at seyself.com |
|---|
| | 323 | */ |
|---|
| | 324 | public static function divideNumber( numericArray:Array, value:Number ):Array |
|---|
| | 325 | { |
|---|
| | 326 | return numericArray.map(function(v:Number, i:int, a:Array) { return v / value; } ); |
|---|
| | 327 | } |
|---|
| | 328 | |
|---|
| | 329 | /** |
|---|
| | 330 | * 配列をランダムに並び替えます |
|---|
| | 331 | * |
|---|
| | 332 | * @param array 並び替えを行う配列 |
|---|
| | 333 | * @return 新しい配列を返します |
|---|
| | 334 | * @author michi at seyself.com |
|---|
| | 335 | */ |
|---|
| | 336 | public static function shuffle( array:Array ):Array |
|---|
| | 337 | { |
|---|
| | 338 | var c:Array = array.concat(); |
|---|
| | 339 | var n:int, i:int = c.length - 1, t:*; |
|---|
| | 340 | for( ; i; --i ){ |
|---|
| | 341 | n = Math.random() * i >> 0; |
|---|
| | 342 | t = c[i]; |
|---|
| | 343 | c[i] = c[n]; |
|---|
| | 344 | c[n] = t; |
|---|
| | 345 | } |
|---|
| | 346 | return c; |
|---|
| | 347 | } |
|---|
| | 348 | |
|---|
| | 349 | /** |
|---|
| | 350 | * 指定配列の中から比較対象の配列内に同じ値が含まれているものだけを抜き出した新しい配列を作ります |
|---|
| | 351 | * |
|---|
| | 352 | * @param array 比較元となる配列 |
|---|
| | 353 | * @param compareTarget 比較対象の配列 |
|---|
| | 354 | * @return 新たしい配列を返します |
|---|
| | 355 | * @author michi@seyself.com |
|---|
| | 356 | */ |
|---|
| | 357 | public static function matches(array:Array, compareTarget:Array):Array |
|---|
| | 358 | { |
|---|
| | 359 | var len1:uint = array.length; |
|---|
| | 360 | var len2:uint = compareTarget.length; |
|---|
| | 361 | var res:Array = []; |
|---|
| | 362 | for (var i:int = 0; i < len1; i++ ) { |
|---|
| | 363 | for (var j:int = 0; j < len2; j++ ) { |
|---|
| | 364 | if( array[i] == compareTarget[j] ) { |
|---|
| | 365 | res.push( array[i] ); |
|---|
| | 366 | break; |
|---|
| | 367 | } |
|---|
| | 368 | } |
|---|
| | 369 | } |
|---|
| | 370 | return res; |
|---|
| | 371 | } |
|---|
| | 372 | |
|---|
| | 373 | |
|---|