2012-01-20 15 views
0

javascript array.pushは配列に要素を追加しています。配列内の要素を置き換えるオプションはありますか?以下の関数は2回呼び出され、event.mediaCollection.mediaIdsを制御することはできません。したがって、mediaDTO配列には同じ数のmediaIdsが2回挿入されます。私はそれが起こるのを防ぎたいと思います。私は、同じ配列に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]}); 
    } 
} 

編集:これを達成するための一時的なオブジェクトを作成する余裕はありません。 MediaDTO配列のIDを一意にすることができました。

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

+0

...配列でもするんmediaDTOの必要性を、あなたが実際にもmediaDTOsをローカルにしたいことを確認してください? – doogle

+0

申し訳ありませんが本当に明確ではないが、xpapadは私が探していたものをほとんど持っています。 mediaDTOは配列である必要がありますが、私はオブジェクトがどのような違いをもたらすのかを実際に理解していませんか? – neelmeg

答えて

2

変更

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

しかしmediaDTOsがローカルであることから、私は問題が何であるかわからない...

0

代わりに、オブジェクトを使用します。

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

次に、以下のようなものを持つ固有のID:

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

+0

興味深い答えのようです。私は "obj"の部分を理解していませんでした。 2番目のforループでobjの代わりにmediaDTOを使うべきですか? – neelmeg

関連する問題