2012-01-20 2 views
0

Мы знаем, что javascript array.push добавляет элементы в массив. Есть ли возможность заменить элементы в массиве? Следующая функция вызывается дважды, и я не контролирую event.mediaCollection.mediaIds. Таким образом, массив mediaDTOs заселяется одним и тем же числом mediaIds дважды. Я хочу, чтобы это не происходило. Я хочу добавить новые mediaIds каждый раз, когда эта функция вызывается вместо того, чтобы вставлять mediaIds в тот же массив.заменить функцию в массиве javascript

function calledTwice(){ 
    var mediaIds = event.mediaCollection.mediaIds; 
    var mediaDTOs = []; 
    for(var i = 0; i < mediaIds.length; i++) { 
      mediaDTOs.push({id:mediaIds[i]}); 
    } 
} 

Редактировать: Нельзя создавать временный объект для достижения этого. Получается, чтобы идентификаторы в массиве mediaDTOs были уникальными.

+0

делают mediaDTO, чтобы быть массивом? – doogle

+0

Извините за то, что я не очень понятный, но у xpapad почти есть то, что я искал. mediaDTOs должен быть массивом, я не совсем понимаю, какая разница, какой бы объект мог сделать? – neelmeg

ответ

2

изменение

mediaDTOs.push({id:mediaIds[i]}); 

в

mediaDTOs[i] = {id:mediaIds[i]}; 

но так mediaDTOs локальна, я не уверен, что проблема ...

0

Используйте объект вместо:

var mediaDTOs = { }; 
for(var i = 0; i < mediaIds.length; i++) { 
    mediaDTOs[ mediaIds[i] ] = true; 
} 

Тогда вы можете получить уникальные идентификаторы с чем-то вроде:

var ids = []; 
for(var id in obj){ 
    ids.push(id); 
} 

Убедитесь, что вы действительно хотите сделать mediaDTOs местной, хотя ...

НЕОБХОДИМОСТИ
+0

Кажется, интересный ответ. Однако я не понял часть «obj». Должен ли я использовать mediaDTO вместо obj во втором цикле? – neelmeg

Смежные вопросы