我想循环遍历一个字符串数组,将这些字符串拆分到某个字符上,然后将这些新字符串输入到一个数组中,例如,从第一个数组中提取字符串"val:key",然后使用函数从数组中检索字符串,并在":"上将其拆分到一个包含["val","key"]的新数组中。到目前为止,这就是我所拥有的,底部是console.log时返回的内容。
var dict = [];
dict.push("me; pro: myself");
dict.push("labor, laboris; n: work");
dict.push("voco, vocare, vocavi, vocatum; v: call");
function parseDict(arr){
/* parseDict takes a dictionary entry and splits it between its latin part and its part of speech/english translation*/
var dictFinal = [];
arr.toString();
for (i = 0; i < arr.length; i++){
dictFinal[i] += arr[i].split(";");
}
return dictFinal;
}
console.log(parseDict(dict)) prints out
[ 0: "undefinedme; pro: myself"
1: "undefinedlabor, laboris; n: work"
2: "undefinedvoco, vocare, vocavi, vocatum; v: call"
]
为什么它没有在";"上拆分为两个字符串,为什么它返回一个未定义的值?
它是未定义的,因为您正在对空数组索引执行+=
dictFinal[i] += arr[i].split(";");
^^
第一次通过dictFinal[i]
未定义,因此它是
dictFinal[i] = undefined + arr[i].split(";");
你可能只是想要
dictFinal[i] = arr[i].split(";");
使用dictFinal.push(...)
或dictFinal[i] = ...
呼叫arr.toString();
对您的情况没有多大作用;它只是从数组中生成一个字符串,然后期望将其分配给变量/返回等。
var dict = [];
dict.push("me; pro: myself");
dict.push("labor, laboris; n: work");
dict.push("voco, vocare, vocavi, vocatum; v: call");
function parseDict(dict) {
// considered that you know the final length of the final
// length of the array you could use: new Array(dict.length)
var dictFinal = [];
for (i = 0; i < dict.length; i++) {
dictFinal[i] = dict[i].split(";");
}
return dictFinal;
}
console.log(parseDict(dict)); // [["me"," pro: myself"],["labor, laboris"," n: work"],["voco, vocare, vocavi, vocatum"," v: call"]]
+=
将尝试获取变量中的内容,并与等号右侧的内容进行连接/相加:
var a = 'abc';
a += 'def';
console.log(a); // abcdef
var b = 1;
b += 1;
console.log(b); // 2
// and your's case:
var c; // here c === undefined (your case dictFinal[i] === undefined)
c += 'ABC';
console.log(c); // undefinedABC
var my_array = [1,2,3];
// .toString() is called on the array so the concatenation can happen:
// It would be the same as writing:
// 'my_string' + my_array.toString();
// or 'my_string' + my_array.join(',');
var d = 'my_string' + my_array;
console.log(d); // my_string1,2,3
如果您真的需要+=并且不想看到"UNDEFINED",可以尝试:
dictFinal[i] = ((typeof dictFinal[i]!=='undefined') ? dictFinal[i]+arr[i].split(";") : arr[i].split(";"));