2016-12-16 7 views
0

私は以下のように2次元配列を持っています。今度は、さらに3列(Col E、Col F、Col G)を追加し、これら3つの列はCol Dの解析値を持つ必要があります。Googleのアプリケーションスクリプト/ javascriptを使用して2次元配列に列を追加する方法

既存の配列k(OR)を変更するか、新しい配列を作成します。

入力:

k=[ 
[Col A, Col B, Col C, Col D], 
[1, A, 8, [(P0, 1), (P2, 7), (P1, 1)]], 
[2, B, 4, [(P2, 4)]], 
[3, C, 13,[(P2, 1)]]] 

出力:

[Col A, Col B, Col C, Col D, Col E, Col F, Col G], 
[1, A, 8, [(P0, 1), (P2, 7), (P1, 1)],1,7,1], 
[2, B, 4, [(P2, 4)],0,4,0], 
[3, C, 13,[(P2, 1)],0,1,0]]] 

事前に感謝します!

+0

ようこそ。既に試したコードの[example](http://stackoverflow.com/help/mcve)を提供してください。 –

+0

"これらの3つの列がCol Cの解析値をどのように持つべきか"ということは明確ではありません:行1がE、F、Gに対して行1、7、1を出力する理由を説明できますか?行2は0,4,0 'など? – Bardy

+0

@バーディ - タイプミスのため申し訳ありません - これらの3つの列は、Col Dの形式の値を解析する必要があります –

答えて

0

これで必要なのはありますか?

各行を通過し、[0,0,0]を追加し、置換規則を見つけることができる限り、0の位置を番号で置き換えます。

このようなジェネレータで作業する場合、私は珍しいことではありません。

data6.map(function(row) { 
    var toExpand = row[row.length-1]; 
    var indices = /(?:\(P)(\d)/g; 
    var splitter = /(\d)(?:\))/g; 
    var extracted; 
    var eIndex; 

    toAdd = [0,0,0]; 
    while(extracted = splitter.exec(toExpand)) { 
    eIndex = indices.exec(toExpand); 
    toAdd[eIndex[1]] = extracted[1]; 
    } 
    return row.concat(toAdd); 
}); 
+0

https:// jsfiddle.net/szxq41qc/5/ - コードを見て、エラーを確認できますか?私は最終的な出力を得ることができません。 –

+0

申し訳ありませんが、私はあなたのコードのコンテキストにもっと入れておく必要があります、これはdata6の定義のすべてを置き換えます。このマップ操作の戻り値を変数に格納するか、別の場所に渡すことができます。これは、希望の出力をリターンとして持つ1つのステートメントです。 –

+0

ありがとうRobinがコードスニペットを使用して動作させます。 –

関連する問題