-1

key:reportData と値の配列を使用して、この方法で JSON データを取得しています。

 {"reportData":[
    ["1185","R","4t","G","06","L","GT","04309","2546","2015","CF FE","01H1","20","23840","FF20"],
    ["1186","R","5t","R","01","L","TP","00110","1854","2016","FE LL","06W3","01","19065","FB01"],
    ["1187","R","6t","H","06","L","TP","04333","1864","2015","CF FE SL","0209","FD22","19845",null],
    ["1188","R","7t","H","06","L","PR","04041","6951","2015","CC CT FE GN PC","0070","00","36590","LB00"],
    ["1189","R","8t","H","06","L","WS","04290","4450","2014","CF   EN   FE   PC   TP","0070","EA30","28320.00",null],
    ["1190","R","9t","H","06","L","LA","04915","4430","2015","CF DK FE RR TC","0040","10","23680","FB10"],
    ["1191","R","10t","H","06","L","LF","04335","2532","2015","CF FE GE","0040","FC10","22970",null],
    ["1192","R","11t","H","06","L","SA","04772","8345","2015","BZ C8 FE","01D6","13","33390","LC13"]]}

各配列要素、特に12番目と14番目のインデックスのデータを比較して交換したい。

ex: in "reportData":[
    ["1185","R","4t","G","06","L","GT","04309","2546","2015","CF FE","01H1","20","23840","FF20"]]

つまり、このロジックを使用して「20」と「FF20」を比較して交換したいのです。

If 14th index value != null then assign,

   12th index=14th index value.

else if 14th index value ==null,

then leave 12th index=12th index value as it is.

これは、「reportData」キーの配列のすべてのリストに対して繰り返す必要があります。

したがって、私の最終的な JSON は次のようになります。

    "reportData":[
["1185","R","4t","G","06","L","GT","04309","2546","2015","CF FE","01H1","FF20","23840","FF20"],//interchange 12th with 14th as 14th !=null
["1186","R","5t","R","01","L","TP","00110","1854","2016","FE LL","06W3","FB01","19065","FB01"],//interchange 12th with 14th as 14th !=null
["1187","R","6t","H","06","L","TP","04333","1864","2015","CF FE SL","0209","FD22","19845",null],//leave 12th as IT IS as 14th ==null
["1188","R","7t","H","06","L","PR","04041","6951","2015","CC CT FE GN PC","0070","00","36590","LB00"],//interchange 12th with 14th as 14th !=null
["1189","R","8t","H","06","L","WS","04290","4450","2014","CF   EN   FE   PC   TP","0070","EA30","28320.00",null],//leave 12th as IT IS as 14th ==null
["1190","R","9t","H","06","L","LA","04915","4430","2015","CF DK FE RR TC","0040","10","23680","FB10"],//interchange 12th with 14th as 14th !=null
["1191","R","10t","H","06","L","LF","04335","2532","2015","CF FE GE","0040","FC10","22970",null],//leave 12th as IT IS as 14th ==null
["1192","R","11t","H","06","L","SA","04772","8345","2015","BZ C8 FE","01D6","13","33390","LC13"]]//interchange 12th with 14th as 14th !=null

私はこのように試しましたが、それは入れ替わっています、

function swapJsonKeyValues(input) {
        var one=['FCOL,ICOL']; output = {};
        for (one in input) {
            if (input.hasOwnProperty(one)) {
                output[input[one]] = one;
            }
        }
        return output;
    }

誰でもこの問題で私を助けることができますか?

4

3 に答える 3

0

FCOL関数の例でとの配列が何のICOLためにあるのかわかりませんが、この問題に対処する方法の 1 つを次に示します。

機能しないcopyElementため、関数を呼び出しました。swapJsonKeyValues1) 既にデータを解析したと仮定すると、JSON ではなく JS オブジェクトになりました。2) キーと値のペアを交換しているのではなく、条件に基づいて要素をコピーしているだけです。

関数が行うのは、各配列が少なくとも 14 要素の長さであることを確認することだけです。そうであれば、14 番目の要素がnull. の場合は、要素 12 に値をコピーします。mapコールバックが の各配列で実行された後、単純に新しい配列を返しますreportData

function copyElement(obj) {
  return obj.reportData.map(function (el) {
     if (el.length >= 14 && el[14] !== null) el[12] = el[14];
     return el;
  });
}

copyElement(obj);

デモ

于 2015-09-18T14:51:03.427 に答える
-1

これを試すことができます:

var jsonData =  {"reportData":[
    ["1185","R","4t","G","06","L","GT","04309","2546","2015","CF FE","01H1","20","23840","FF20"],
    ["1186","R","5t","R","01","L","TP","00110","1854","2016","FE LL","06W3","01","19065","FB01"],
    ["1187","R","6t","H","06","L","TP","04333","1864","2015","CF FE SL","0209","FD22","19845",null],
    ["1188","R","7t","H","06","L","PR","04041","6951","2015","CC CT FE GN PC","0070","00","36590","LB00"],
    ["1189","R","8t","H","06","L","WS","04290","4450","2014","CF   EN   FE   PC   TP","0070","EA30","28320.00",null],
    ["1190","R","9t","H","06","L","LA","04915","4430","2015","CF DK FE RR TC","0040","10","23680","FB10"],
    ["1191","R","10t","H","06","L","LF","04335","2532","2015","CF FE GE","0040","FC10","22970",null],
    ["1192","R","11t","H","06","L","SA","04772","8345","2015","BZ C8 FE","01D6","13","33390","LC13"]]}

jsonData.reportData.map(function (row) {return row[12] = (row[14]) ? row[14] : row[12];})
console.log(jsonData);

マップ コールバック関数はこれらの条件をチェックし、必要なデータを返します。

于 2015-09-18T14:21:01.203 に答える