假设我有一个数组如下:
"I", "am", "", "still", "here", "", "man"
从此我想生成以下两个数组:
"I", "am", "still", "here", "man"
0, 1, 3, 4, 6
所以,一个没有空字符串的数组,也是一个非空字符串数组索引的数组。从第一个产生这两个数组的好方法是什么?
更新
在生成两个数组后,我需要完整的第一个数组。
答案 0 :(得分:2)
循环遍历数组并检查每个元素是否为空。如果不是,请将其位置添加到一个数组,将其值添加到另一个数组:
var elems, positions
for (var i = 0; i < arr.length; i++){
if (arr[i] != ""){
elems.push(arr[i])
positions.push(i)
}
}
编辑:这将为您留下3个阵列(原始,元素,位置)。如果您只想修改原始版本,请使用arr.filter()
答案 1 :(得分:1)
var nonEmptyStrings = [];
var nonEmptyIndices = [];
["I", "am", "", "still", "here", "", "man"].forEach(function (str, i) {
if (str != '') {
nonEmptyStrings.push(str);
nonEmptyIndices.push(i);
}
});
答案 2 :(得分:0)
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]