-1

テーブル データを使用してオブジェクトを作成しようとしています

 var cond = [
        { 
    "locality": "Dwarka",
    "Created ->OFP": "4.73",
    "OFP -> Picked": "2.16",
    "Picked - > Delivery": "14.91",
    "Over_All_TAT": "22.65",
    "Total_Order": "159" 
  },
  {
    "locality": "IIT & AIIMS",
    "Created ->OFP": "2.56",
    "OFP -> Picked": "9.74",
    "Picked - > Delivery": "19.41",
    "Over_All_TAT": "32.61",
    "Total_Order": "54"
  },
  {
    "locality": "Gk1 & Nehru Place",
    "Created ->OFP": "2.39",
    "OFP -> Picked": "6.87",
    "Picked - > Delivery": "14.06",
    "Over_All_TAT": "24.13",
    "Total_Order": "31"
  },
  {
    "locality": "Mayur Vihar",
    "Created ->OFP": "3.52",
    "OFP -> Picked": "1.24",
    "Picked - > Delivery": "15.3",
    "Over_All_TAT": "21.03",
    "Total_Order": "33"
  },
  {
    "locality": "Snapdeal_Mundhka",
    "Created ->OFP": "17.32",
    "OFP -> Picked": "4.65",
    "Picked - > Delivery": "100.32",
    "Over_All_TAT": "123.16",
    "Total_Order": "31"
  }
  ]

キー名がルールに従っていないことは知っていますが、それらは列名です。2 番目の列にアクセスできますか? Created -> OFPインデックスを使用します(例: cond[0][1])。

cond[i]アクセスできるのは、内側のブロック要素にアクセスするにはどうすればよいですか。

私は R を使用しているため、json オブジェクトは jsonlite パッケージを使用して作成されているため、制限があります。

4

3 に答える 3

2

次のように内側のブロックにアクセスできます。

cond[i]['Created ->OFP']

ループの例:

var cond = [{
  "locality": "Dwarka",
  "Created ->OFP": "4.73",
  "OFP -> Picked": "2.16",
  "Picked - > Delivery": "14.91",
  "Over_All_TAT": "22.65",
  "Total_Order": "159"
}, {
  "locality": "IIT & AIIMS",
  "Created ->OFP": "2.56",
  "OFP -> Picked": "9.74",
  "Picked - > Delivery": "19.41",
  "Over_All_TAT": "32.61",
  "Total_Order": "54"
}, {
  "locality": "Gk1 & Nehru Place",
  "Created ->OFP": "2.39",
  "OFP -> Picked": "6.87",
  "Picked - > Delivery": "14.06",
  "Over_All_TAT": "24.13",
  "Total_Order": "31"
}, {
  "locality": "Mayur Vihar",
  "Created ->OFP": "3.52",
  "OFP -> Picked": "1.24",
  "Picked - > Delivery": "15.3",
  "Over_All_TAT": "21.03",
  "Total_Order": "33"
}, {
  "locality": "Snapdeal_Mundhka",
  "Created ->OFP": "17.32",
  "OFP -> Picked": "4.65",
  "Picked - > Delivery": "100.32",
  "Over_All_TAT": "123.16",
  "Total_Order": "31"
}]
var val;
cond.forEach(function(el) {
  val = el['Created ->OFP'];
  console.log(val);
});

于 2015-10-01T14:55:06.713 に答える
1

私が理解しているように、あなたができるようにしたいのは次のようなものです:

cond[0][1];   // "4.73"

cond[0]is and object であり、オブジェクト内のキーの順序が保証されていないため、これを行うことはできません。したがって、入力しCreated ->OFPた 2番目のキーであるからといって、それが実際にオブジェクトの 2 番目のキーであるとは限りません。あなたは見ることができ、キーはおそらく同じ順序で戻ってきますが、これに頼ることはできません.Object.keys(cond[0])

あなたがする必要があるように聞こえるのは、配列内のオブジェクト(他の人が指摘したようにJSONではない)を配列自体に変換することです。したがって、次のような結果になります。

[
    [
        "Dwarka",
        "4.73",
        "2.16",
        "14.91",
        "22.65",
        "159"
    ],...
]

そして、次のことができます:

cond[0][1];   //and get the first row and second column.

オリジナルを配列の配列に変換するには、次のようにします。

// Note: this is the order **you** want the columns to be iterated in
var columns = ["locality",
    "Created ->OFP",
    "OFP -> Picked",
    "Picked - > Delivery",
    "Over_All_TAT",
    "Total_Order"];

var arrayOfArrays = cond.map(function (i) {
    return columns.map(function (prop) {
        return i[prop];
    });
});

console.log(arrayOfArrays[0][1]);   // logs 4.73

フィドル

于 2015-10-01T15:05:00.693 に答える
0

次のように要素にアクセスできます:

cond[i]["Created ->OFP"]; // "4.73"

1、2 のようなインデックスを使用する場合は、2 つの選択肢があります。オブジェクトの代わりに配列を使用すると、次のようになります。

 var cond = [
        ["Dwarka", "4.73", "2.16", "14.91", "22.65", "159" ],
        [ ... ]
  }

または、次のようになるオブジェクトでインデックス 1、2 ... を使用できます。

var cond = [
        { 
    "0": "Dwarka",
    "1": "4.73",
    "2": "2.16",
    "3": "14.91",
    "4": "22.65",
    "5": "159" 
  },
  {...}
]

lengthただし、オブジェクトに要素として追加しない限り、プロパティは見つかりません。


あなたにとって最善の解決策は、オブジェクトをそのままにして、ループを使用することだと思いますfor(key in cond)

for(var i=0; i<cond.length; i++) {
    for(var key in cond[i]) {
       console.log(cond[i][key]);
    }
}
于 2015-10-01T14:54:54.123 に答える