2010-09-07 12 views
1

У меня есть буквальное массив, который загружается при загрузке страницы ... Смотрите ниже:Редактировать Javascript массив без перезагрузки страницы

<script type="text/javascript"> 
var members = [ 
    { 
     name:"Alan Lim", 
     id:"54700f06-a199-102c-8976-b1732b7ffc74", 
     positions:[ 
      { 
      id:"4cdeb2a2-8897-102d-80ee-95364de284f0" 
      } 
     ] 
    }, 
    { 
     name:"Ben Sinclair", 
     id:"ed34b5a4-9b2f-102c-8475-9e610b13400a", 
     conflict:"true", 
     positions:[ 
      { 
      id:"f00c2128-8895-102d-80ee-95364de284f0" 
      }, 
      { 
      id:"f00c68ea-8895-102d-80ee-95364de284f0" 
      }, 
      { 
      id:"4cde6824-8897-102d-80ee-95364de284f0" 
      }, 
      { 
      id:"4cde9ea2-8897-102d-80ee-95364de284f0" 
      } 
     ], 
     locations:[ 
      { 
      id:"88fb5f94-aaa6-102c-a4fa-1f05bca0eec6" 
      }, 
      { 
      id:"930555b0-a251-102c-a245-1559817ce81a" 
      } 
     ] 
    }, 
    { 
     name:"Debbie Wright", 
     id:"fa49307a-9cfb-102d-bd08-842c500d506d" 
    } 
] 
</script> 

Есть в любом случае, чтобы изменить массив без перезагрузки страницы? Например, я хочу, чтобы добавить conflict:"true" к Alan Lim ...

Например:

Изменить это:

{ 
     name:"Alan Lim", 
     id:"54700f06-a199-102c-8976-b1732b7ffc74", 
     positions:[ 
      { 
      id:"4cdeb2a2-8897-102d-80ee-95364de284f0" 
      } 
     ] 
    }, 

Для этого:

{ 
     name:"Alan Lim", 
     id:"54700f06-a199-102c-8976-b1732b7ffc74", 
     conflict:"true", 
     positions:[ 
      { 
      id:"4cdeb2a2-8897-102d-80ee-95364de284f0" 
      } 
     ] 
    }, 

Trust, который имеет смысл :) Причина в том, что я использую другой JavaScript для извлечения информации из этого массива. Когда я делаю изменения с другим JavaScript Я хочу, чтобы складывать и вычитать в массив, чтобы отразить изменения ...

+0

Вы можете динамически добавлять свойства к элементу массива. –

ответ

6

Вы может перебрать, чтобы найти элемент, который вы хотите (по имени кажется, учитывая вопрос), а затем изменить его, как это:

for(var i=0; i<members.length; i++) { 
    if(members[i].name == "Alan Lim") 
    members[i].conflict = "true"; 
} 

You can give it a try here, или сделать его немного более универсальным, как this:

function setProp(name, prop, value) { 
    for(var i=0; i<members.length; i++) { 
    if(members[i].name == name) 
     members[i][prop] = value; 
    } 
} 
3

Поскольку ваш массив Численно индексированные, Вы можете не просто сделать:

members[0]['conflict'] = "true";