Сценарий Google Apps: создание нового столбца в массиве на основе значения других столбцов - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть массив, который я вытащил из листа Google. По сути, он сообщает о производительности сообщений моего клиента в Instagram. Первый столбец в массиве дает URL-адрес изображения, а второй столбец - URL-адрес видео в зависимости от того, было ли сообщение изображением или видео. Усеченная версия массива будет выглядеть следующим образом:

[ [ 'Media URL',
    'Video thumbnail URL',    
    'Engagement',
    'Media impressions',
    'Media reach' ],
  [ 'www.sampleimageurl.com/1',
    '',
    1328,
    23359,
    22234 ],
  [ '',
    'www.samplevideourl.com/2',
    683,
    12542,
    11743 ],
  [ 'www.sampleimageurl.com/3',
    '',
    1070,
    15232,
    11863 ]]

В этом массиве либо значение «URL-адрес мультимедиа» будет иметь значение, либо «URL-адрес миниатюры видео» будет иметь значение - никогда не будет условия, при котором либо оба имеют значение, либо ни одно из них не имеет значения.

Мне нужна ваша помощь, чтобы найти способ объединить значения 'Media URL' и 'Video thumbnail URL». Новый массив будет выглядеть примерно так:

[ [ 'URL',
    'Engagement',
    'Media impressions',
    'Media reach' ],
  [ 'www.sampleimageurl.com/1',
    1328,
    23359,
    22234 ],
  [ 'www.samplevideourl.com/2',
    683,
    12542,
    11743 ],
  [ 'www.sampleimageurl.com/3',
    1070,
    15232,
    11863 ]]

Я экспериментировал с созданием пустого массива var newArray = [] и его заполнением, используя условие if со сращиванием, но с этим подходом у меня ничего не получилось .

for (i in data) {
    var row = data[i]
    if (row[1] === "") {
      newArray.push(row.splice(1,1))
    }
    else {
      newArray.push(row.splice(0,1))
    }

Ответы [ 3 ]

1 голос
/ 21 февраля 2020

Краткий ответ:

A.map(item => { item[0] = item[0] || item [1];  item.splice(1, 1); });
A[0][0]="URL";

Живой код: https://runkit.com/embed/iixibhqj5sg0

enter image description here

Полный код фрагмент кода:

const A = [
[ 'Media URL',
'Video thumbnail URL',    
'Engagement',
'Media impressions',
'Media reach' ],
[ 'www.sampleimageurl.com/1',
'',
1328,
23359,
22234 ],
  [ '',
'www.samplevideourl.com/2',
683,
12542,
11743 ],
  [ 'www.sampleimageurl.com/3',
'',
1070,
15232,
11863 ]];

A.map(item => { item[0] = item[0] || item [1];  item.splice(1, 1); });
A[0][0]="URL";
console.log(A);
1 голос
/ 21 февраля 2020
function kreatiefMetKurk(){

 var array = [ [ 'Media URL',
'Video thumbnail URL',    
'Engagement',
'Media impressions',
'Media reach' ],
  [ 'www.sampleimageurl.com/1',
'',
1328,
23359,
22234 ],
  [ '',
'www.samplevideourl.com/2',
683,
12542,
11743 ],
  [ 'www.sampleimageurl.com/3',
'',
1070,
15232,
11863 ]]; 

array.map(function(row){row[1] = (row[0]+row[1]).trim(); 
                        row.shift(); 
                        return row;})

}
1 голос
/ 21 февраля 2020

Предполагая, что ни один другой столбец не пуст, Вы можете использовать filter и map :

const data = [ [ 'Media URL',
'Video thumbnail URL',    
'Engagement',
'Media impressions',
'Media reach' ],
  [ 'www.sampleimageurl.com/1',
'',
1328,
23359,
22234 ],
  [ '',
'www.samplevideourl.com/2',
683,
12542,
11743 ],
  [ 'www.sampleimageurl.com/3',
'',
1070,
15232,
11863 ]];

data[0][0] = "URL";
data[0][1] = "";
const output = data.map(row => row.filter(col => col !==""));
console.info(output);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...