Ich versuche, 2 Spalten aus einem abgegrenzten Text auszutauschen, aber am weitesten entfernt habe ich die erste Spalte. Das versuche ich zu erreichen.

// Input
A1—B1—C1
A2—B2—C2
A3—B3—C3

Tauschen Sie Spalte 1 gegen Spalte 3 aus. Trennzeichen ist "-".

// Result
C1—B1—A1
C2—B2—A2
C3—B3—A3

JSFiddle

  var text = $('#input').val().split("\n");

  var delimiter = "—";
  var col_1 = $('#col_1').val() - 1;
  var col_2 = $('#col_2').val() - 1;

  var out = [];
  var col_arr = [];
  var col = '';

  // Get first column
  for (var i = 0; i < text.length; i++) {
    col_arr = text[i].split(delimiter);
    col = col_arr[col_1];
    if (col != undefined) col = col;
    else col = '';
    out[i] = col;
  }

  text = out.join('\n');
0
Vianne 18 Apr. 2018 im 13:37

3 Antworten

Beste Antwort

Sie haben den Text mit split erfolgreich in ein Array seiner Bestandteile aufgeteilt. Sie können jetzt die Array-Funktion reverse verwenden, um die Reihenfolge umzukehren, und dann alle Teile mit {{X2 zusammenfügen }} Array-Funktion und Ihr Trennzeichen.

Dies vereinfacht Ihren Code in Ihrer for - Schleife wie folgt:

for (var i = 0; i < text.length; i++) {
  out[i] = text[i].split(delimiter).reverse().join(delimiter);
}
3
Tom 18 Apr. 2018 im 11:19

Split () gibt ein Array zurück. Sie können also zuerst Ihre Textdaten zu einem tatsächlichen Array verarbeiten, damit Sie leichter daran arbeiten können:

function getArrayFromInput(){
  var arr = [];
  var lines = $('#input').val().split("\n");
  for (let line of lines){
    let column = line.split('—');
    arr.push(column);
  }
  return arr;
}
//returns [['A1','B1','C1'],['A2','B2','C2'],['A3','B3','C3']]

Dann ist es einfacher zu tun, was Sie versuchen :)

function swapColumns(inputArr, col1, col2){
    var arr = JSON.parse(JSON.stringify(inputArr)); //get inputArr structure
    for(let i = 0; i<arr.length; i++){
        //swap the values
        arr[i][col1] = inputArr[i][col2];
        arr[i][col2] = inputArr[i][col1];
    }
    return arr;
}
//return your array with swaped columns

Ich überlasse es Ihnen dann, das Array in Text umzuwandeln!

Fühlen Sie sich frei, Fragen zu stellen

1
aznoqmous 18 Apr. 2018 im 10:54