我是Javascript的新手,我试图将一个字符串数组作为参数传递给同步函数。在函数内部,数组合并为一个字符串,我不知道为什么。输入的结构使我无法改变它。
module.exports = {
myFunc: function (input) {
console.log(input); //"string1string2,string3"
var type = input[0];
var val = input[1][0];
console.log('type: ' + type + ', val: ' + val)
}
}
myFunc(["string1", ["string2", "string3"]]); //'type: s, val: t'
参数input
与所有三个字符串连接,变为string1string2,string3
并打印出'type: s, val: t'
。
答案 0 :(得分:0)
你的javascript似乎工作正常,你可以在这里看到:
var myFunc = function (input) {
var type = input[0];
var val = input[1][0];
console.log('type: ' + type + ', val: ' + val)
}
myFunc(["string1", ["string2", "string3"]]); //'type: s, val: t'

我必须删除模块,以便我可以在代码段中运行它
答案 1 :(得分:0)
您提供的代码示例并未提供您声明的输出。
但是,我怀疑你可能会有这样的事情:
const myFunc = function (input) {
var type = input[0];
var val = input[1][0];
console.log('type: ' + type + ', val: ' + val)
}
myFunc("string1", ["string2", "string3"]); //'type: s, val: t'

注意,我从你的例子中删除了外部数组。如果您只调用myFunc("string1")
,则会获得您声称要获得的输出。
我怀疑你缺少你的功能期望的一个级别的数组。
发生了什么,而不是以字符串而不是数组的形式进行访问。
const str = 'abcdef';
console.log(str[0]);
console.log(str[1]);
console.log(str[1][0]);
console.log(str[1][1]);
console.log(str[1][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]);

注意如何使用类似数组的语法访问字符串的单个字符。但是,与其他语言不同,在JavaScript中,字符串的单个字符仍然是一个字符串,因此您实际上可以无限次地调用[0]
并仍然可以恢复该字符。