使用Javascript

时间:2017-02-18 06:15:18

标签: javascript string multidimensional-array

我有一个包含学生档案的二维数组。其中第1列包含名字,第2列包含中间名,第3列包含姓名等等。

我希望做的是加入所有三列的文本,转换为大写,然后返回到第1列,即#34; FIRSTMIDDLELAST"在单元格A1中。

我的代码片段下面似乎很直接,但我只是非常新的JS,执行后我收到错误..

  

无法读取属性" 0"来自undefined。

@ line

  

StudentList [I] [0] .concat(FistName,MidlName,姓氏);

for (var i=0; i<StudentList.length; i++){
      var FistName = StudentList[i][0].valueOf().toUpperCase();
      var MidlName = StudentList[i][0].valueOf().toUpperCase();
      var LastName = StudentList[i][0].valueOf().toUpperCase();

       StudentList[i][0].concat(FistName,MidlName,LastName);
    }    

非常感谢一些帮助。 非常感谢你。

更新:

这是Google电子表格的一个小样本,我的数组来自......

First   Middle   Last     Age  Grade  English  Maths
John    Peter    Smith    17   12     A        A
Kevin   Paul     James    16   11     B        C
Kim     Caroline Anderson 15   10     B        A
.... so on

2 个答案:

答案 0 :(得分:1)

代码看起来很好,也许你的数组值错了?

var StudentList = [];
StudentList.push(['First', 'Middle', 'Last']);

document.write('original: ' + StudentList.toString() + '<br/>');
for (var i=0; i<StudentList.length; i++){
  var FistName = StudentList[i][0].valueOf().toUpperCase();
  var MidlName = StudentList[i][1].valueOf().toUpperCase();
  var LastName = StudentList[i][2].valueOf().toUpperCase();


  //StudentList[i][0].concat(FistName,MidlName,LastName);
  StudentList[i][0] = FistName.concat(MidlName,LastName); //i think you mean this
};
document.write('modified: ' + StudentList.toString());

答案 1 :(得分:0)

假设你的结构是这样的(如你所描述的):

var StudentList = [
  ['fname1','mname1','lname1'],
  ['fname2','mname2','lname2'],
  ['fname3','mname3','lname3']
];

您的代码可能是这样的:

for (var i = 0; i < StudentList.length; i++) {
  var FistName = StudentList[i][0].toUpperCase();
  var MidlName = StudentList[i][1].toUpperCase();
  var LastName = StudentList[i][2].toUpperCase();

  StudentList[i][0] = FistName + MidlName + LastName;
}

/*
[
  [
    "FNAME1MNAME1LNAME1",
    "mname1",
    "lname1"
  ],
  [
    "FNAME2MNAME2LNAME2",
    "mname2",
    "lname2"
  ],
  [
    "FNAME3MNAME3LNAME3",
    "mname3",
    "lname3"
  ]
]
*/

有些观点:

  1. 您不需要.valueOf()来获取价值;
  2. concat不修改实际值,但会创建一个新的String。因此,您必须将结果分配给StudentList[i][0];
  3. 您可以使用+运算符
  4. 将JavaScript中的字符串连接起来