将数组的两列连接成一个新列

时间:2016-08-12 11:16:16

标签: javascript google-apps-script

我有数组range,包含3列和10行。

如何将第1列的内容与第2列连接起来并将它们推送到新范围dataEnome

我正在使用以下循环,但效率不高:

var dataEnome =[];
for (i=0; i<range.length; i++){
  dataEnome.push(range[i][0])+(range[i][1]); 
};

范围如下: enter image description here

3 个答案:

答案 0 :(得分:0)

对于数据映射,您可以考虑使用array.map API。

示例:

&#13;
&#13;
var range =
    [
        [ 'col1.a', 'col2.1', 'c' ],
        [ 'col1.b', 'col2.2', '3' ],
        [ 'col1.c', 'col2.3', '6' ],
        [ 'col1.d', 'col2.4', '9' ],
        [ 'col1-e', 'col2.5', '1c' ],
        [ 'col1-f', 'col2.6', '6c' ],
        [ 'col1-g', 'col2.7', '7c' ],
        [ 'col1-h', 'col2.8', '8c' ],
        [ 'col1-i', 'col2.9', '9c' ],
        [ 'col1-j', 'col2.10', '0c' ],
    ];
var dataEnome =range.map(row => { return row[0] + row[1]});
console.log(dataEnome);
&#13;
&#13;
&#13;

有关map的更多示例用法;

请参阅: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

答案 1 :(得分:0)

如果要连接两列中的每条记录

您可以这样做:

&#13;
&#13;
var dataEnome =[];
  for (i=0; i<range.getValues().length; i++){
    dataEnome.push(range.getValues()[i][0]+range.getValues()[i][1]);
  };
&#13;
&#13;
&#13;

希望这会对你有所帮助。

感谢。

答案 2 :(得分:0)

...除了dataEnome.push(range[i][0])+(range[i][1]);之外,最有可能的特点是语法错误...... 不应该是dataEnome.push(range[i][0] + range[i][1]);dataEnome.push(range[i][0].concat(range[i][1])); ......我不认为OP的解决方案效率不高。

只有一个人可以将其转变为可重复使用且更具功能性的风格......

function collectConcatenatedFirstTwoRowColumns(collector, row) {

    collector.push(row[0].concat(" / ", row[1]));
    return collector;
}

var
    range = [
        ["0, 0", "0, 1", "0, 2"],
        ["1, 0", "1, 1", "1, 2"],
        ["2, 0", "2, 1", "2, 2"],
        ["3, 0", "3, 1", "3, 2"],
        ["4, 0", "4, 1", "4, 2"],
        ["5, 0", "5, 1", "5, 2"]
    ],
    dataEnome = range.reduce(collectConcatenatedFirstTwoRowColumns, []);

console.log(dataEnome);