Testing Iteration of object keys & values

by Bruno G.

JavaScript

//Ajoute une méthode 'diff' à l'objet array pour soustraire un vecteur d'un autre
//   utilisation : [1, 2, 3, 4, 5].diff([2, 3, 5]);  ==>  [1, 4]
Array.prototype.diff = function(a) {
    return this.filter(function(i) {return !(a.indexOf(i) > -1);});
}
//Élimine les doublons d'un vecteur
//   http://dreaminginjavascript.wordpress.com/2008/08/22/eliminating-duplicates/
Array.prototype.unique = function() {
    var i,len=this.length,out=[],obj={};
    for (i=0;i<len;i++) obj[this[i]]=0;
    for (i in obj) out.push(i);
    return out;
}

Object.prototype.keys = function() {
    var keys = [];
    for(var key in this) {
console.log('k', key);
        if(this.hasOwnProperty(key)) keys.push(key);
    }
    return keys;
};

Object.prototype.length = function() {
    var size = 0, key;
    for (key in this) {
console.log('s', key);
        if (this.hasOwnProperty(key)) size++;
    }
    return size;
};

Object.prototype.iterateKeys = function(worker){
    var keys = [];
    for (var key in this) {
        if (this.hasOwnProperty(key)) keys.push(key);
    }
    for (var i = 0; i < keys.length; i++) {
        worker(keys[i], this[ keys[i] ]);
    }
}


var bru = [];
bru['aaa'] = 'askdla';
bru['bbb'] = 'sdfs';

//alert(bru.length());
/*var k = bru.keys();
alert(k);
var t;
for (t=0; t<k.length; t++) {
    alert('for'+bru[k[t]]);
}*/
bru.iterateKeys(function(k, v){
    alert('K = '+k+' & V = '+v);
});