在Javascript中交换一维数组中的列

在Javascript中交换一维数组中的列,javascript,jquery,arrays,Javascript,Jquery,Arrays,我试图从一个带分隔符的文本中交换两列,但我得到的最远结果是获取第一列。这就是我想要达到的目标 // Input A1—B1—C1 A2—B2—C2 A3—B3—C3 将第1列与第3列交换。分隔符为“-” var text=$('#input').val().split(“\n”); var分隔符=“-”; var col_1=$('#col_1').val()-1; var col_2=$('#col_2').val()-1; var out=[]; var col_arr=[]; var

我试图从一个带分隔符的文本中交换两列,但我得到的最远结果是获取第一列。这就是我想要达到的目标

// Input
A1—B1—C1
A2—B2—C2
A3—B3—C3
将第1列与第3列交换。分隔符为“-”

var text=$('#input').val().split(“\n”);
var分隔符=“-”;
var col_1=$('#col_1').val()-1;
var col_2=$('#col_2').val()-1;
var out=[];
var col_arr=[];
var col='';
//获取第一列
对于(变量i=0;i
您已经使用
split
成功地将文本拆分为其组成部分的数组,现在可以使用
reverse
数组函数反转顺序,然后使用
join
数组函数和定界符将所有部分重新连接在一起

这将简化
for
循环中的代码,从而:

for (var i = 0; i < text.length; i++) {
  out[i] = text[i].split(delimiter).reverse().join(delimiter);
}
for(变量i=0;i
您已经使用
split
成功地将文本拆分为其组成部分的数组,现在可以使用
reverse
数组函数反转顺序,然后使用
join
数组函数和定界符将所有部分重新连接在一起

这将简化
for
循环中的代码,从而:

for (var i = 0; i < text.length; i++) {
  out[i] = text[i].split(delimiter).reverse().join(delimiter);
}
for(变量i=0;i
split()返回一个数组,因此您可以首先将文本数据处理为一个实际数组,以便更轻松地处理它:

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']]
那么,做你想做的事情会更容易:)

函数交换列(inputArr、col1、col2){
var arr=JSON.parse(JSON.stringify(inputArr));//获取inputArr结构
for(让i=0;isplit()返回一个数组,因此您可以首先将文本数据处理为一个实际数组,以便更容易处理它:

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']]
那么,做你想做的事情会更容易:)

函数交换列(inputArr、col1、col2){
var arr=JSON.parse(JSON.stringify(inputArr));//获取inputArr结构
for(设i=0;i这是一个带有
temp
变量的简单数组。我曾经迭代
text
数组,但您可以将其替换为“for…”循环

$(“按钮”)。单击(函数(){
var分隔符=“-”;
var rowdimiter=“\n”;
var text=$('#input').val()
.trim()//删除文本前后的空白
.split(行分隔符);
var col_1=$('#col_1').val()-1;
var col_2=$('#col_2').val()-1;
//检查列数是否介于0和列数之间
//并通知用户,如果他们的
var result=text.map(函数(行){
var arr=row.split(分隔符);
var temp=arr[col_1];//缓存col_1的值
arr[col_1]=arr[col_2];//将col_2 1的值设置为第2列的值
arr[col_2]=temp;//将col_2的值设置为temp的值
返回arr.join(分隔符);
}).join(行分隔符);
$('#output').val(结果);
});
textarea{
宽度:100%;
高度:120px
}
钮扣{
利润率:10px 0
}

将col与col互换#

A1-B1-C1-D1 A2-B2-C2-D2 A3-B3-C3-D3 交换
这是一个带有
temp
变量的简单数组。我曾经迭代
文本
数组,但您可以将其替换为“for…”循环

$(“按钮”)。单击(函数(){
var分隔符=“-”;
var rowdimiter=“\n”;
var text=$('#input').val()
.trim()//删除文本前后的空白
.split(行分隔符);
var col_1=$('#col_1').val()-1;
var col_2=$('#col_2').val()-1;
//检查列数是否介于0和列数之间
//并通知用户,如果他们的
var result=text.map(函数(行){
var arr=row.split(分隔符);
var temp=arr[col_1];//缓存col_1的值
arr[col_1]=arr[col_2];//将col_2 1的值设置为第2列的值
arr[col_2]=temp;//将col_2的值设置为temp的值
返回arr.join(分隔符);
}).join(行分隔符);
$('#output').val(结果);
});
textarea{
宽度:100%;
高度:120px
}
钮扣{
利润率:10px 0
}

将col与col互换#

A1-B1-C1-D1 A2-B2-C2-D2 A3-B3-C3-D3 交换
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