2017-10-24 6 views
0

サンプル・オブジェクトをオブジェクトキーを変換しますか?あなたは、この機能で発生したいコメントで言ったようにJavascriptが画像に

var images = { "foo": "bar.jpg" } 
for (var imageKey in images) { 
    images[imageKey] = ctx.drawImage(images[imageKey],x,y) 
} 
+0

あなたはもう少し説明を与えることはできますか? 「新しいオブジェクトを作成せずに」という意味はどうですか?イメージオブジェクトを直接変更しますか?だからあなたは新しいものの代わりにイメージでいっぱいのイメージオブジェクトで終わりたいですか? –

+0

@AlexanderVitanovはい私はキーを直接変更したかったのです。それに点を付ける方法はありますか? –

+0

はい、回答は –

答えて

0

を見て、あなたがイメージパスがImage型のオブジェクトに変異させたいこと:

0

一つの方法は、それを行うにはあなたが関数にimagesオブジェクトを渡すと、それはその鍵をループます

var images = { "foo": "bar.jpg" }; 

function transformImagePaths(images){ 
    Object.keys(images).forEach(key => { 
     let imagePath = images[key]; 
     images[key] = new Image(); 
     images[key].src = imagePath; 
    }); 
} 

、および画像とパスを交換することにより、各キーに割り当て直す:、私は、これはあなたが探しているものだと思います。

+0

このガイダンスをありがとうございます。しかし、オブジェクト変数はグローバル変数であり、エレガンスのために関数内でキーを画像に変更する必要があります。次に、それらを別の関数で描画します。 –

+0

私たちはReact Nativeの画像コンポーネントをそのまま使っているのですが、それは正しいのですか? –

+0

新しいグローバルオブジェクトを作成せずにわかったので、純粋なJavascriptで実現することは不可能です。 –

0

// first proving approach 
 
var imageMap = { 
 
    "foo": "bar.jpg", 
 
    "baz": "biz.jpg" 
 
}; 
 
console.log('imageMap : ', imageMap); 
 

 
Object.keys(imageMap).forEach(function (imageKey) { 
 
    var img = (new Image); 
 
    img.src = imageMap[imageKey]; 
 
    imageMap[imageKey] = img; 
 
}); 
 
console.log('imageMap : ', imageMap); 
 

 

 
// final iteration 
 
var imageMap = { 
 
    "foo": "bar.jpg", 
 
    "baz": "biz.jpg" 
 
}; 
 
console.log('imageMap : ', imageMap); 
 

 
function assignImageToBoundMap(key) { 
 
    var img = (new Image); 
 
    img.src = this[key]; 
 
    this[key] = img; 
 
} 
 
function reassignImageMap(map) { 
 
    Object.keys(map).forEach(assignImageToBoundMap, map); 
 
} 
 

 
reassignImageMap(imageMap); 
 

 
console.log('imageMap : ', imageMap);
.as-console-wrapper { max-height: 100%!important; top: 0; }

関連する問題