如何忽略空数组元素进行长度计算

时间:2017-12-29 11:42:14

标签: javascript jquery

JS:

var personnesAAjouter = [];

personnesAAjouter[idUtilisateur] = [];
personnesAAjouter[idUtilisateur]['nom'] = nomUtilisateur;
personnesAAjouter[idUtilisateur]['prenom'] = prenomUtilisateur;
personnesAAjouter[idUtilisateur]['email'] = emailUtilisateur;

例如,如果我添加idUtilisateur = 102的用户,则personneAAjouter的长度为102

也许因为键是整数而Javascript使用键来获取数组长度?

有一种方法可以忽略每个空元素以进行长度计算吗?

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

您可以使用下面的array#reduce

let arr=[];
arr[5]=1;
console.log(arr.length);
let myLength=arr.reduce((acc,cv)=>(cv)?acc+1:acc,0);
console.log(myLength);

答案 1 :(得分:1)

在JavaScript中,数组是对象。数组具有length属性,其值是对象+ 1中存在的最高整数键。

所以array.length不返回数组中的元素数,只返回该属性的值。

要实际计算数组中元素的数量,您可以使用以下内容:

var arrayCount = function(myArray) {
    var count = 0;
    myArray.forEach(function(val) {
        count++;
    });
    return count;
}

答案 2 :(得分:0)

我会改用filter来保持数据类型的一致性(尤其是在打字稿中)

let stringArr = [];
stringArr[3] = "abc";
const result = stringArr.filter(word => word !== undefined);

答案 3 :(得分:0)

我最终使用了let shareButton = UIBarButtonItem(title: "", style: .plain, target: self, action: #selector(shareAction(sender:))) shareButton.tintColor = AppColor.barButtonColor navigationItem.rightBarButtonItem = shareButton 而不是arr.filter(x=>1).length

arr.length