2012-04-04 28 views

risposta

3

Here's a sample con concatenamento

//say you have these arrays 
var test1 = [{ 
    "Country": "Spain", 
    "info info1": 0.329235716, 
    "info info2": 0.447683684, 
    "info info3": 0.447683747}, 
{ 
    "Country": "Chile", 
    "info info1": 1.302673893, 
    "info info2": 1.357820775, 
    "info info3": 1.35626442}, 
{ 
    "Country": "USA", 
    "info info1": 7.78805016, 
    "info info2": 26.59681951, 
    "info info3": 9.200900779}]; 

var test2 = [{ 
    "Country": "Germany", 
    "info info1": 0.329235716, 
    "info info2": 0.447683684, 
    "info info3": 0.447683747}, 
{ 
    "Country": "China", 
    "info info1": 1.302673893, 
    "info info2": 1.357820775, 
    "info info3": 1.35626442}, 
{ 
    "Country": "France", 
    "info info1": 7.78805016, 
    "info info2": 26.59681951, 
    "info info3": 9.200900779}]; 


//similar to jQuery, wrap them in an object 
function $W(param) { 
    var obj = {}; 

    //set data 
    obj.data = param; 

    //augment the object with a remove function 
    obj.remove = function(key, val) { 
     var i = 0; 
     //loop through data 
     while (this.data[i]) { 
      if (this.data[i][key] === val) { 
       //if we have that data, splice it 
       //splice changes the array length so we don't increment 
       this.data.splice(i, 1); 
      } else { 
       //else move on to the next item 
       i++; 
      } 
     } 
     //be sure to return the object so that the chain continues 
     return this; 
    } 

    //return object for operation 
    return obj 
} 

//the following will look strangely similar to jQuery 

//remove chile, then USA 
var result1 = $W(test1).remove('Country', 'Chile').remove('Country', 'USA'); 

//remove germany and china 
var result2 = $W(test2).remove('Country', 'China').remove('Country', 'Germany'); 

//should only have spain and france 
$('#test2').val(JSON.stringify(result1)+JSON.stringify(result2));​ 
+0

Com'è la funzione riutilizzabile con più in questo modo? – S16

+0

i dati sono avvolti nell'oggetto. è stata aggiunta una funzione per recuperare e rimuovere dati specifici. il concatenamento funziona quando la chiamata della funzione precedente restituisce lo stesso oggetto su cui stava operando. questo rende possibile per la prossima chiamata di funzione di usarlo, i suoi metodi e i suoi dati. fondamentalmente, è così che funziona anche jQuery. raccoglie solo elementi in una matrice, quindi li avvolge in un oggetto e lo aumentano con le funzioni jQuery, che restituiscono quell'oggetto dopo ogni operazione. – Joseph

+0

Cosa succede se voglio usare questa funzione su più dataset sulla stessa pagina? – S16

6
+9

w3schools, eh? https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice – Jordan

+1

w3schools è il primo in google;) – galchen

+0

@Jordan: Non vedo alcun vantaggio nel tuo commento. Quando vuoi indicare una risorsa qualificata, fallo, e la risorsa non sarebbe MDN, sarebbe ECMAScript: http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262 .pdf –

Problemi correlati