2013-09-04 3 views
4

J'ai créé un tableau comme:Ajouter ou mettre à jour un élément de tableau

myarr: [ 
    { name:'London', population:'7000000' }, 
    { name:'Munich', population:'1000000' } 
] 

À un moment donné, je dois ajouter quelques nouveaux éléments au tableau, mais d'abord je dois vérifier si l'élément avec le même nom existe déjà . Si oui, la valeur doit être mise à jour. Si non, le nouvel élément doit être créé et ajouté. Si la valeur du nouvel élément est égale à zéro et que l'élément existe, il doit être supprimé du tableau.

+1

S'il vous plaît poster le code que vous avez essayé jusqu'à présent. –

+4

Nous pouvons améliorer votre tentative, mais nous (certains d'entre nous de toute façon) n'écrirons pas le code pour vous à partir de zéro –

+0

S'il vous plaît noter que le problème a ** rien ** à faire avec JSON du tout. Vous confondez les littéraux d'objet JavaScript (une construction de la syntaxe du langage JavaScript) avec JSON (un format d'échange de données indépendant du langage, comme XML ou CSV). Je vais modifier votre question en conséquence. –

Répondre

3

Cela devrait faire l'affaire http://jsfiddle.net/tcwqV/

var arr = [ 
    { name:'London', population:'7000000' }, 
    { name:'Munich', population:'1000000' } 
] 

var addNewElement = function(arr, newElement) { 
    var found = false; 
    for(var i=0; element=arr[i]; i++) { 
     if(element.name == newElement.name) { 
      found = true; 
      if(newElement.population === 0) { 
       arr[i] = false; 
      } else { 
       arr[i] = newElement; 
      }    
     } 
    } 
    if(found === false) { 
     arr.push(newElement); 
    } 
    // removing elements 
    var newArr = []; 
    for(var i=0; element=arr[i]; i++) { 
     if(element !== false) newArr.push(element); 
    } 
    return newArr; 
} 

arr = addNewElement(arr, {name: 'Paris', population: '30000000'}); 
console.log(arr); 
arr = addNewElement(arr, {name: 'Paris', population: '60000000'}); 
console.log(arr); 
arr = addNewElement(arr, {name: 'Paris', population: 0}); 
console.log(arr); 
2

Vous pouvez faire comme ce

function myFunction(myarr, item) { 
    var found = false; 
    var i = 0; 
    while (i < myarr.length) { 
     if (myarr[i].name === item.name) { 
      // Do the logic (delete or replace) 
      found = true; 
      break; 
     } 
     i++; 
    } 

    // Add the item 
    if (!found) 
     myarr.push(item); 

    return myarr; 
} 
Questions connexes