2012-02-13 11 views
2

私はこのようになります秩序配列があります: - :分割CSV

  • をそれぞれを取る「私はやりたい何

    [-0.0020057306590257895, 50, 0.09598853868194843, 50, 0.19398280802292264, 49.99999999999999, 0.2919770773638969, 50] 
    

    は以下の通りですが「奇数」のエントリを作成し、オブジェクトのキーインデックスにします。これは、値を四捨五入して10を掛けることで実現できます。

  • 「偶数」の値をとり、オブジェクト内の対応する値にします。上記のCSVファイルには、次のオブジェクトを返す必要があります

そうは...: -

{ 
    0: 50, 
    1: 50, 
    2: 49.99999999999999, 
    3: 50 
} 

は誰1は、私はjQueryのいずれかを使用して、必要な配列を生成するために、このCSVを解析する方法を知っていますまたは普通のjavascript?

+0

あなたの研究努力はどこですか? – Christoph

+0

私はjavascript 'split'関数を何も成功せずに使用しようとしました。そして、これまで私が見てきたすべてのメソッドは、この関数を使用しています。私は何かがシンプルだが、string.split( '、')のjavascriptエラーが発生していると確信しています。私がそれを使用しようとするたびにsplitは関数ではありません。私はこれが私にとって単純なもので、十分な平易なJavaScriptの恩恵を受けていないと確信しているので、誰かが私に正しい方向を向けることを望んでいました。 – gordyr

+0

いくつかのjavascript用語: '{}'は「オブジェクト」または「ハッシュ」です。これらはキーと値のペアです。 '[]'は "配列"であり、順序付けられたリストであり、キーはありません。 – nwellcome

答えて

4

あなたは.split(",")を使って試したコメントの中で、CSVファイルを文字列に読み込む何かをしたと仮定します。

var csv = "-0.0020057306590257895, 50, 0.09598853868194843, 50, 0.19398280802292264, 49.99999999999999, 0.2919770773638969, 50"; 
var arr = csv.split(","); 
var obj = {}; 
for (var i = 0; i < arr.length - 1; i += 2) { 
    obj[Math.round(arr[i] * 10)] = arr[i + 1]; 
} 

あなたはおそらく偶数個の要素がif (arr.length % 2 == 0)ようなもので最初の配列であることを確認する必要があります。あなたと離れて歩く必要があります

のものがある:

  1. {}中括弧は、オブジェクトを定義するために使用され、空のカッコの組はnew Object()と同じことを意味しますが、中括弧を使用することをお勧めします。
  2. []角括弧は、インデックスの配列(arr[0]など)とそのキーによるオブジェクトのプロパティ(obj['name']など)によって配列の要素を配列またはアドレス指定するために使用できます。
+0

パーフェクト...これはまさに私が必要としていたもので、私が想像したよりもはるかに簡単です。きれいでよく練習された答え、いくつかの良い個人的な学習のためにあなたにお世話になりました。 :-) – gordyr

1
var arr = "-0.0020057306590257895, 50, 0.09598853868194843, 50, 0.19398280802292264, 49.99999999999999, 0.2919770773638969, 50".split(","); 
var obj = {}; 

for (index = 0; index < arr.length - 1; index += 2) { 
    var key = Math.round(parseFloat(arr[index]) * 10); 
    var value = Math.round(parseFloat(arr[index + 1]) * 10); 
    obj[key.toString()] = value.toString(); 
} 

値を取得するには、次のキーと値のペアを削除するには

を:

delete obj[key]; 

は、この情報がお役に立てば幸いです。

+0

もう一つの良い答えIndikafに感謝....残念なことにnwellcomeは数分でそれを打ち負かし、彼のソリューションはまさに私が必要としていた(あなたと同様にあなたのように)。 。 :-) – gordyr

1

あなたのデータ構造は、各整数の値を持つことが保証されている場合(つまり、偶数列に3.9ストレート5.9に言うからジャンプしません)あなたが努力のビットを保存し、使用することができます

var arr = "-0.0020057306590257895, 50, 0.09598853868194843, 50, 0.19398280802292264, 49.99999999999999, 0.2919770773638969, 50".split(","); 
var result = []; 

for (index = 0; index < arr.length - 1; index += 2) { 
    result.push(parseFloat(arr[index + 1])); 
} 

NB - これは、parseFloatを使用するために値として文字列ではなく数値を持ちます