在用于电子表格的Javascript中输出对象中的数组

Output arrays in object in Javascript for spreadsheet

本文关键字:输出 对象 数组 Javascript 用于 电子表格      更新时间:2023-09-26

这是我的代码。

function order() {
  //declare things
var order = [3, 2, 1, 0]
var testOne = [2, 3, 7, 4]
var testTwo = ["c", "b", "a", "d"]

//sort by order
  var collatedArray = [];
    for (var i = 0; i < order.length; i++)
    {
        index = order[i];
        var collated =
        {
           test1 : testOne[index],
           test2 : testTwo[index]
        }
        collatedArray.push(collated);
    }

  //Create output
  var output = [];
  for (i=0; i<collatedArray.length; i++)
  {
    output[i] = collatedArray[i].test1
  }
return output
}

当前的输出仅为collatedArray[i].test1,它给出:

4, 7, 3, 2

如果我把output[I]=collectedArray[I].test1改为test2,我得到:

d, a, b, c

我只想输出整个整理好的数组(test1和test2),这样我就可以得到:

4, 7, 3, 2
d, a, b, c

而不需要输出变量或转换回数组。这些信息都在那里,我只是不知道如何把它弄出来。对编码非常陌生,只是不知道在这里该做什么:(感谢

output调整为包含两个数组的数组;在最后一个for循环中,用collatedArray[0][i].test1collatedArray[1][i].test2 的值填充output中的每个阵列

  // Create output
  var output = [[], []]; 
  for (i=0; i<collatedArray.length; i++)
  {
    output[0][i] = collatedArray[i].test1;
    output[1][i] = collatedArray[i].test2;
  }

function order() {
  //declare things
  var order = [3, 2, 1, 0]
  var testOne = [2, 3, 7, 4]
  var testTwo = ["c", "b", "a", "d"]
  //sort by order
  var collatedArray = [];
  for (var i = 0; i < order.length; i++) {
    index = order[i];
    var collated = {
      test1: testOne[index],
      test2: testTwo[index]
    }
    collatedArray.push(collated);
  }
  //Create output
  var output = [
    [],
    []
  ];
  for (i = 0; i < collatedArray.length; i++) {
    output[0][i] = collatedArray[i].test1;
    output[1][i] = collatedArray[i].test2;
  }
  return output
}
console.log(order())

有几种方法可以做到这一点,包括将每个testNumber(testOnetestTwo等)存储在由属性组成的对象中。了解对象是如何工作的,在这里观察了您的代码后,您应该能够轻松地找出如何循环遍历所述Object的每个属性(在您的情况下将是数组),以打印出您要查找的内容。如果你不能弄清楚,有大量的堆栈溢出问答;A非常好地涵盖了这一点。

但目前,这里有一个简单的替代方案:数组。

https://jsfiddle.net/6r3hv3aq/7/

var testOne = [2,3,7,4];
var testTwo = ["c","b","a","d"];
var test = [testOne,testTwo];
for (var i = 0; i <= test.length-1; i++) {
    console.log(test[i]);
}

它将输出您所要求的内容:

[2, 3, 7, 4]
["c", "b", "a", "d"]

注意:当您单击提供的jsfiddle链接时,您可能需要刷新页面以查看加载到控制台中的适当结果。或者,在迁移到链接时保持控制台打开

由于您想要将其用于电子表格,我假设您想要一个可以导入电子表格程序的CSV输出字符串。

function row(source, sequence) {
  var temp = new Array(sequence.length);    
  for (var i = 0; i < sequence.length; i++)
    temp[i] = source[sequence[i]];
  return temp.join(",")
}
function order() {
  //declare things
  var sequence = [3, 2, 1, 0];
  var testOne = [2, 3, 7, 4];
  var testTwo = ["c", "b", "a", "d"];
  var rows = [];
  rows.push(row(testOne, sequence));
  rows.push(row(testTwo, sequence));
  return rows.join("'r'n");
}

这是一个plunkr