2016-06-22 5 views
3

JavaScriptの配列の長さの値をオーバーライドするアイデアがあり、ランダムな値を返す必要があります。
さんが言わせて...JavaScriptの配列の長さをオーバーライドする

a=[56,78,89,200,800] 
b=['a','b','f'] 

a.length //should give me only 2; 
b.length //also should give 2 

それはlengthプロパティを変更することは可能であり、また、スプライスまたはスライス方法を変更するには、任意の微調整があります。

+0

変更しましたか? – Rayon

+0

2を返すようにそれらをハードコードできますか? – wmash

+0

私は無駄に試してみましたが、はい、私はその値を2か何かにしたいのですが、どの配列でも同じ値にする必要があります。 –

答えて

1

Array.lengthは、保護されたプロパティです。のみを読み取る;それを変更しようとすると悪い考えです。

さらに良い独自のクラスを作成できます。例:

var oArray = function (aArr){ 
    oRet = {}; 

    for(var i = 0, aArrL = aArr.length; i < aArrL; i++){ 
     oRet[i] = aArr[i]; 
    } 
    oRet.length = 2; 

    return oRet; 
}; 

a= new oArray([56,78,89,200,800]); 
b=['a','b','f']; 

console.log(a.length); 
console.log(b.length); 

abは、標準のJavaScriptのArrayで、カスタムクラスです。

+3

"Array.lengthは保護されたプロパティです。それを変更。"いいえ、保護されていません、それは変更することができますし、場合によっては、長さ= 0にして参照を壊さずに配列を空にするなど、変更することはかなり良い考えです。 – Redu

+1

'b.length = 2;'(最後の値を削除します)のように値を変更することはできますが、 'Array.prototype.length = 2;'のように動作を変更することはできません。たぶん私は不正確に表現したかもしれない。 –

関連する問題