如果不为空,则在数组元素上进行 Substr
Substr on an array element if not empty
嘿,我有一个包含一些空字符串和一些有内容的字符串的数组。
我想把非空字符串的前5个字母切下来,放到一个新的数组中。我也想保留空的。
示例:
myArray = [ "","","123456789","","",""];
var newArray = ["","","12345","","",""]
我尝试使用 for 循环,如果 myArray[i] 为空则不执行 substr(),但我得到一个错误,它不是一个函数。
其实我不需要把它放到一个新的数组中,我只是想把myArray(i).subsrt(5)的值放到一个splice()中,但是我得到了错误:
VM750:82 Uncaught TypeError: Cannot read property 'substr' of undefined
如果不查看您的所有代码,很难知道您的确切问题是什么,但这里有一个 for 循环遍历第一个数组中的所有元素,并插入每个字符串的前 5 个或更少的字符进入一个新数组。
myArray = [ "","","123456789","","",""];
var newArray = [];
for(var i = 0; i < myArray.length; i++) {
newArray.push(myArray[i].substr(0,5));
}
ES6 与 array.map
myArray = [ "","","123456789","","",""];
var newArray = myArray.map((s) => s.substr(0, 5))
正是@le_m所说的:
myArray = [ "","","123456789","","",""];
var newArray = myArray.map(e => e.substr(0, 5));
您需要对非空项使用 substr:
像这样:
myArray = [ "","","123456789","","",""];
for(var i = 0; i < myArray.length; i++) {
temp = myArray[i];
if (temp && temp != "")
myArray[i] = temp.substr(0, 5);
else
myArray[i] = "";
}
嘿,我有一个包含一些空字符串和一些有内容的字符串的数组。
我想把非空字符串的前5个字母切下来,放到一个新的数组中。我也想保留空的。
示例:
myArray = [ "","","123456789","","",""];
var newArray = ["","","12345","","",""]
我尝试使用 for 循环,如果 myArray[i] 为空则不执行 substr(),但我得到一个错误,它不是一个函数。
其实我不需要把它放到一个新的数组中,我只是想把myArray(i).subsrt(5)的值放到一个splice()中,但是我得到了错误:
VM750:82 Uncaught TypeError: Cannot read property 'substr' of undefined
如果不查看您的所有代码,很难知道您的确切问题是什么,但这里有一个 for 循环遍历第一个数组中的所有元素,并插入每个字符串的前 5 个或更少的字符进入一个新数组。
myArray = [ "","","123456789","","",""];
var newArray = [];
for(var i = 0; i < myArray.length; i++) {
newArray.push(myArray[i].substr(0,5));
}
ES6 与 array.map
myArray = [ "","","123456789","","",""];
var newArray = myArray.map((s) => s.substr(0, 5))
正是@le_m所说的:
myArray = [ "","","123456789","","",""];
var newArray = myArray.map(e => e.substr(0, 5));
您需要对非空项使用 substr:
像这样:
myArray = [ "","","123456789","","",""];
for(var i = 0; i < myArray.length; i++) {
temp = myArray[i];
if (temp && temp != "")
myArray[i] = temp.substr(0, 5);
else
myArray[i] = "";
}