Mencari untuk membuat visualisasi peta. Ingin objek nilai kunci sederhana dalam format ini:

 {
      Alabama: "AL",
      Alaska: "AK",
      Arizona: "AZ",
      ...
 }

Baca data seperti ini:

    var source = "https://raw.githubusercontent.com/plotly/datasets/master/2011_us_ag_exports.csv";
    
    var stateCodes = {};
    
    d3.csv(source, data => {
        data.map(d => {
            stateCodes[d["state"]] = d["code"];
            return stateCodes;   
        }); 
    });

    console.log(stateCodes);
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.11.0/d3.min.js"></script>

Coba jalankan cuplikan ini. Tampaknya mengambil titik data yang tepat tetapi tidak mengisi objek stateCodes atau tidak mengembalikannya.

Apa yang harus saya ubah?

2
Elan 20 November 2017, 10:12

1 menjawab

Jawaban Terbaik

Anda menempatkan console.log setelah metode d3.csv yang asinkron. Pindahkan setelah d3.map dan periksa apakah stateCodes telah diisi:

Dokumen untuk metode d3.csv.

var source = "https://raw.githubusercontent.com/plotly/datasets/master/2011_us_ag_exports.csv";
    
var stateCodes = {};
    
d3.csv(source, (data) => {
    data.map(d => {
        stateCodes[d["state"]] = d["code"];
        return stateCodes;   
    });
 
    console.log(stateCodes);
    // other code
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.11.0/d3.min.js"></script>

Perhatikan bahwa dalam file data Anda California memiliki karakter spasi di awal.

enter image description here

Anda dapat memperbaikinya di file sumber atau menggunakan metode trim:

stateCodes[d["state"].trim()] = d["code"];;

1
Mikhail Shabrikov 20 November 2017, 10:46