尝试创建一个只从数组中删除“字符串”的函数。我期待只留下数字。我已经通过仅向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]
答案 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)
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;