2017-06-15 12 views
0

MVVMフレームワークとして現在Knockout.JSを使用しているプロジェクトを実行中です。 markersArray['Tiong Bahru Station (EWL)']のような単純なものを使って、私の特定のmarkersArrayオブジェクトの値にアクセスするなどの基本的な操作を試しています。私は空白のために角括弧記法を使用しなければならないことを理解しています。しかし、私はconsole.logこれと、さらに私のコードでは、それは価値がありません。JavaScriptのキーによるオブジェクトプロパティへのアクセス

コードは以下の通りです:scripts.jsファイルで

JS

:maps.jsファイルで

var stationList = [ 
     {name: "Tiong Bahru Station (EWL)", marker: markersArray['Tiong Bahru 
Station (EWL)']} 
console.log(markersArray['Tiong Bahru Station (EWL)']); // Returns undefined 


var markersArray = {}; 
for (var i = 0; i < markers.length; i ++) { 
    marker = new google.maps.Marker({ 
     position: markers[i].position, 
     map: map, 
     animation: google.maps.Animation.DROP 
    }); 
    var name = markers[i].name; 
    markersArray[name] = marker; 
} 
var markers = [ 
{name:"Tiong Bahru Station (EWL)", position: {lat:1.28498, lng:103.82283}} 
]; 

console.logでmarkersArrayが正しくビルドされ、正しく設定されていることを確認しました。キーを使って値にアクセスするだけで何の価値も得られない理由を理解するのに役立つでしょう。

+0

これはあなたに何か答えを与えるのに十分なコードではありません。 markersArratyオブジェクトを満たすために反復処理するマーカー配列は何ですか?btwはオブジェクトのひどい名前です。また、script.jsが実行する前にmaps.jsがそのコードを実行していることを確認する必要があります – Dellirium

+0

あなたは少し混乱してオブジェクトを持っているようです。 'stationList'はあなたが定義している配列ですが、' markersArray'が定義されていないので、 'stationList'の定義は失敗します。 2番目のスニペットを更新した場合、配列 'marker 'は存在しないので、それも失敗します。私はあなたが働くことを望むスニペットを作って、コミュニティが助言できることを提案する。 – user3094755

+0

私は新しいコードで追加しました。そうです、maps.jsはscripts.jsより前に実行されます。私はscripts.jsのconsole.log(markerArray)することができ、私はオブジェクト全体を見ることができます。うん、私はオブジェクトの名前を変更し、周りを遊んでいたので、命名規則を忘れてしまった。 lol – bryancresswell

答えて

1

このスニペットの作品ではありますが、私はあなたの問題が何であるか分かりません。

最も簡単な解決策は

markers[i].marker = 'The Marker' markers[markers[i].name] = markers[i]

var markers = [ 
 
{name:"Tiong Bahru Station (EWL)", position: {lat:1.28498, lng:103.82283}} 
 
]; 
 

 
var markersArray = {}; 
 
for (var i = 0; i < markers.length; i ++) { 
 
    var name = markers[i].name; 
 
    markersArray[name] = 'The marker'; 
 
} 
 

 
console.log(JSON.stringify(markers,null,2)) 
 

 
console.log(JSON.stringify(markersArray,null,2))

+0

ええ、それらはすべて同じファイルで実行されますが、私がscripts.jsで試してみると、それ以上の値は与えられません。 – bryancresswell

+0

ありがとう、私は問題を考え出した。 – bryancresswell

0

で、メーカーのアレイにあなたのマーカーを入れ、その後、マーカー配列を指すようになり、私は「非同期を追加しました"キーワードをスクリプトに読み込み、問題を解決しました。その下にあるスクリプトを実行する前にドキュメント全体が読み込まれるのを待っていたため、いくつかの問題が発生しました。

関連する問題