使用Javascript连接多维数组中的字符串元素
我有一个包含学生配置文件的二维数组。在列1包含名字的地方,列2包含中间名,列3姓氏等等。使用Javascript连接多维数组中的字符串元素
我希望做的就是加入所有三列的文本,转换为大写,然后放回第1列,即单元格A1中的“FIRSTMIDDLELAST”。
我的代码片断如下似乎直截了当不够好,但我只是很新的JS,在执行我得到一个错误..
无法从不确定的读取属性“0”。
@线
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);
}
一些帮助将不胜感激。 非常感谢你的进步。
UPDATE:
这是谷歌电子表格,我我的数组来自小样本....
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
该代码似乎很好,也许你有错误的数组值?
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());
你的方法没有错误!那么为什么然后StudentList [i] [0] = FistName.concat(MidlName,LastName); workslist StudentList [i] [0] = FistName + MidlName + LastName;没有,所以我们可以学习以备将来参考。 – user1488934
假设你的结构是这样的(如你所述):
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"
]
]
*/
几点:
- 你不需要
.valueOf()
这里得到的值; -
concat
不会修改实际值,但创建一个新的字符串。所以,你必须将结果分配给StudentList[i][0]
; - 您可以将JavaScript中的字符串与
+
运算符连接起来;
感谢@mrlew,不记得我为什么最终得到.valueOf()也许我只是在尝试不同的东西,看看它是否有帮助。所以即使在尝试你的代码之后,我仍然收到错误“无法将未定义的属性”0.0“设置为”JOHNPETERSMITH“”。尽管至少大写和连接函数起作用,但问题似乎是将字符串插入到数组中。 – user1488934
上面的代码适用于我发布的结构,因为你没有显示你的数据。表格图是不够的。 JavaScript中没有像列一样的东西。你可以有一个数组的数组(我写的)。所以你必须在做任何操作之前知道你的数据。请做一个'console.log(StudentList)'并用结果编辑你的问题(F12打开控制台)。 – mrlew
似乎你的第二列是空,则把命令'调试器;''之前变种FistName = StudentList [I] [0] .valueOf()toUpperCase();',开您的DevTools并使用控制台进行检查。当断点停止时......似乎你对所有三个名字都采用相同的列......你应该为'StudentList [i] [1]'和'[']更改'StudentList [i] [0] 2]' – andrepaulo
你可以在问题中包含数组的示例吗?什么是'.valueOf()'调用的目的? – guest271314