0

假设我有一个数组,如下所示:

"I", "am", "", "still", "here", "", "man"

并由此我希望生成以下两个数组:

"I", "am", "still", "here", "man"

 0, 1, 3, 4, 6

因此,一个没有空字符串的数组,还有一个包含非空字符串的数组索引的数组。从第一个生成这两个数组的好方法是什么?

更新:

在生成两个数组之后,我需要完整的第一个数组。

4

3 回答 3

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()

于 2013-08-07T20:36:05.550 回答
1
var nonEmptyStrings = [];
var nonEmptyIndices = [];
["I", "am", "", "still", "here", "", "man"].forEach(function (str, i) {
    if (str != '') {
        nonEmptyStrings.push(str);
        nonEmptyIndices.push(i);
    }
});
于 2013-08-07T20:38:56.203 回答
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]  

演示

于 2013-08-07T20:44:00.150 回答