Javascript Объединение двух столбцов имен в один столбец в Excel - PullRequest
0 голосов
/ 15 января 2020

Я собираю список имен из таблицы веб-сайта, используя Data Miner. Я пытаюсь добавить имена в столбце Excel. Снимаемые имена имеют формат Фамилия, Имя. Ниже приведены некоторые имена для справки. Я хотел бы изменить имена, чтобы имя предшествовало фамилии, и убрал запятую. Мне удалось разделить имена, добавив имя в столбце 1 и фамилию в столбце 2, используя код ниже. Я не могу привести имена обратно в первый столбец. Если бы кто-то мог показать мне, как это сделать, это было бы здорово. Кроме того, г-н Тед Поттер-младший имеет 2 запятых на его имя. Что я могу сделать, чтобы убедиться, что форматирование соответствует остальным именам, но оставить запятую между Поттером и младшим ??

  • An, Byeong Hun
  • Ancer, Abraham
  • Андерсон, Марк
  • Броня, Райан
  • Бадделей, Аарон
  • Бейкер, Крис
  • Барнс, Рикки
  • Бергер, Даниэль
  • Поттер-младший, Тед

    var cleanup = function (results) {

    // Этот пример показывает, что вы можете l oop через каждый / / строка данных, которые вы обработали, и изменить значение каждого столбца

    // debugger; // раскомментируем эту строку, чтобы включить отладку сценария в Chrome Inspector

    $. each (results, function () {// l oop через каждую строку очищенных данных

    var parts = this.values[0].split(', ');   // get value from column 1 and split it by ' '
              var first_name = parts[parts.length - 1];
    
        //Loop through the remaining elements
        //for "Baker, Chris" this will just be one loop
        var second_name = "";
        for (var i = 0; i < parts.length - 1; i++) {
            //if i = 0 then just add the element otherwise
            //if i > 0 then add what is already there plus space plus next element
            if (i > 0) {
                //this.values[1] = this.values[1] + " " + parts[i];
                second_name  = second_name + ", " + parts[i];
            }else {
                //this.values[1] = parts[i];
                second_name = parts[i];
            }
        }
    
    this.values[0] = first_name + " " + second_name;
    

    console.log (this.values ​​[0]);
    });

    возвращать результаты; // вернуть измененные результаты};

1 Ответ

0 голосов
/ 15 января 2020

Немного сложно сказать без контекста / еще немного кода, но в целом, я думаю, что-то вроде этого будет работать.

Если вы хотите реальный пример, см. Здесь: https://jsfiddle.net/pqjd2h5a/

  • Выполните ваше разбиение
  • Поместите последний элемент массива вперед / в столбец 1
  • L oop через оставшиеся элементы и объедините они вместе в столбце 2
  • Объединить имя и фамилию вместе в столбце 3

Может быть что-то вроде этого:

var cleanup = function(results) {

$.each(results, function(){
    //split the string of "Baker, Chris" into an array of ["Baker", "Chris"]
    //split the string of "Potter, Jr., Ted" into an array of ["Potter", "Jr.", "Ted"]
    var parts = this.values[0].split(', ');

    //set the first column to the last element of the array. i.e. "Chris" or "Ted"
    //this.values[0] = parts[parts.length - 1];
    var first_name = parts[parts.length - 1];

    //Loop through the remaining elements
    //for "Baker, Chris" this will just be one loop
    var second_name = "";
    for (var i = 0; i < parts.length - 1; i++) {
        //if i = 0 then just add the element otherwise
        //if i > 0 then add what is already there plus space plus next element
        if (i > 0) {
            //this.values[1] = this.values[1] + " " + parts[i];
            second_name  = second_name + " " + parts[i];
        }else {
            //this.values[1] = parts[i];
            second_name = parts[i];
        }
    }
    //concatenate the results together in the third column
    //i.e. "Chris Baker" or "Ted Potter Jr."
    //this.values[2] = this.values[0] + " " + this.values[1];

    //Or now output only in first column
    this.values[0] = first_name + " " + second_name;
});

return results;};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...