假设我有一个数组,如下所示:
"I", "am", "", "still", "here", "", "man"
并由此我希望生成以下两个数组:
"I", "am", "still", "here", "man"
0, 1, 3, 4, 6
因此,一个没有空字符串的数组,还有一个包含非空字符串的数组索引的数组。从第一个生成这两个数组的好方法是什么?
更新:
在生成两个数组之后,我需要完整的第一个数组。
假设我有一个数组,如下所示:
"I", "am", "", "still", "here", "", "man"
并由此我希望生成以下两个数组:
"I", "am", "still", "here", "man"
0, 1, 3, 4, 6
因此,一个没有空字符串的数组,还有一个包含非空字符串的数组索引的数组。从第一个生成这两个数组的好方法是什么?
更新:
在生成两个数组之后,我需要完整的第一个数组。
遍历数组并检查每个元素是否为空。如果不是,则将其位置添加到一个数组并将其值添加到另一个数组:
var elems, positions
for (var i = 0; i < arr.length; i++){
if (arr[i] != ""){
elems.push(arr[i])
positions.push(i)
}
}
编辑:这将为您留下 3 个数组(原始、元素、位置)。如果您只想修改原始的一种用途arr.filter()
var nonEmptyStrings = [];
var nonEmptyIndices = [];
["I", "am", "", "still", "here", "", "man"].forEach(function (str, i) {
if (str != '') {
nonEmptyStrings.push(str);
nonEmptyIndices.push(i);
}
});
var myArray = ["I", "am", "", "still", "here", "", "man"] ;
var myNewArray = [] ;
var myOldPosition = [] ;
for(var i=0, max = myArray.length ; i < max ; i++){
myArray[i] == '' ? true : myNewArray.push(myArray[i])
myArray[i] == '' ? true : myOldPosition.push(i)
}
console.log(myArray);//["I", "am", "", "still", "here", "", "man"]
console.log(myNewArray) ;//["I", "am", "still", "here", "man"]
console.log(myOldPosition);//[0, 1, 3, 4, 6]