仅删除数组中的“字符串”

时间:2017-07-19 19:24:53

标签: javascript arrays

尝试创建一个只从数组中删除“字符串”的函数。我期待只留下数字。我已经通过仅向newArray添加数字来完成此操作,而我正在研究splice方法,但无法弄清楚如何编写它。正如您在代码中看到的删除工作,但在其位置返回undefined。

    headerLabel.addConstraint(NSLayoutConstraint(item: headerLabel, attribute: .trailing, relatedBy: .equal, toItem: tableView, attribute: .trailing, multiplier: 1, constant: 0))
    headerLabel.addConstraint(NSLayoutConstraint(item: headerLabel, attribute: .leading, relatedBy: .equal, toItem: headerView, attribute: .leading, multiplier: 1, constant: 0))

    headerLabel.addConstraint(NSLayoutConstraint(item: headerLabel, attribute: .top, relatedBy: .equal, toItem: headerView, attribute: .bottom, multiplier: 1, constant: 0))
    headerLabel.addConstraint(NSLayoutConstraint(item: headerLabel, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 131))

返回[1,undefined,-3,undefined,0.5,22,undefined,6]

6 个答案:

答案 0 :(得分:1)

var arr = [1, "apple", -3, "orange", 0.5, 22, "hello", 6];
var out = arr.filter(function(f) { return typeof(f) !== 'string';});
console.log( out );

答案 1 :(得分:0)

您可能希望使用array.splice()而不是删除,这是属性。

答案 2 :(得分:0)

我会采取另一种方式

function numbersOnly(arr){
let numbers = [];
for(var i = 0; i < arr.length; i++){
    if(typeof arr[i] === "number"){
    numbers.push(arr[i]);
    }
}
console.log(numbers);

}

答案 3 :(得分:0)

如果在数组中删除sth,则会留下一个未定义的空白空间。您需要 shift 数组,因此请替换

 delete arr[i];

arr=arr.slice(0,i).concat(arr.slice(i+1));
i--;

或使用拼接:

arr.splice(i,1);
i--;//dont jump over this index

或使用for循环:

for(var b=i;b<arr.length-1;b++){
  arr[b]=arr[b+1];
}
arr.length-=1;
i--;

或者你可以过滤:

arr.filter(el=>typeof el==="number");//numbers only
//or
arr.filter(el=>typeof el!=="string");//not stringd

答案 4 :(得分:0)

如果数组的单元格包含数字,则该数字对if Number()的结果为true。然后,该值将添加到辅助数组并返回。

  function numbersOnly(arr){ 

      var numbersarr = [];
      var i;
      var k = 0;
      for (i=0; i< arr.length ;i++) {
    
      if (  Number(arr[i])   ) {
           
            numbersarr[k++] = arr[i];
         }
     }
      
      console.log(numbersarr);
      return numbersarr;
     }

    var strarr = [1, "apple", -3, "orange", 0.5,
                  22, "hello", 6 , "car", "123" , 
                  "zoo", "456"];
        
    numbersOnly(strarr);    
    numbersOnly(["foo","bar", "something"]);
    

这就是你的输出:

  [1, -3, 0.5, 22, 6, "123", "456"]

答案 5 :(得分:0)

使用.splice(index, count)

&#13;
&#13;
function numbersOnly(arr) {
  for(var i = 0; i < arr.length; i++) {
    if(typeof arr[i] === "string") {
      arr.splice(i, 1);
    }
  }
  console.log(arr);
}
numbersOnly([1, "apple", -3, "orange", 0.5, 22, "hello", 6]);
&#13;
&#13;
&#13;