[ ].has(obj)
.indexOf()
実装されていると 仮定
Object.defineProperty( Array.prototype,'has',
{
value:function(o, flag){
if (flag === undefined) {
return this.indexOf(o) !== -1;
} else { // only for raw js object
for(var v in this) {
if( JSON.stringify(this[v]) === JSON.stringify(o)) return true;
}
return false;
},
// writable:false,
// enumerable:false
})
!!! Array.prototype.has=function(){...
すべての配列に列挙可能な要素を追加し、js が壊れているため、作成しないでください。
//use like
[22 ,'a', {prop:'x'}].has(12) // false
["a","b"].has("a") // true
[1,{a:1}].has({a:1},1) // true
[1,{a:1}].has({a:1}) // false
2 番目の引数 (フラグ) を使用すると、参照ではなく値による比較が強制されます。
生オブジェクトの比較
[o1].has(o2,true) // true if every level value is same