返回包含key的对象长度为true而不是false

时间:2016-10-13 05:08:48

标签: javascript

我想写一些过滤器逻辑,其中一个对象返回其长度,其中只包含具有真值的键。

DECLARE @WorkingCoordList VARCHAR(max) = 'some lat,long,lat,long string'
DECLARE @Processed INT = 0
DECLARE @CommaLoc INT
DECLARE @Count INT = 0

WHILE @Processed = 0        
    BEGIN       
        SET @CommaLoc = PATINDEX('%,%', @WorkingCoordList)  

        IF @Count % 2 = 0   
        BEGIN   
            SET @WorkingCoordList = STUFF(@WorkingCoordList, @CommaLoc, 1, ' ') --Convert comma to space
        END 
        ELSE    
        BEGIN   
            SET @WorkingCoordList = STUFF(@WorkingCoordList, @CommaLoc, 1, '#') -- Convert comma to hash
        END 

        IF @CommaLoc = LEN(@WorkingCoordList)   
        BEGIN   
            SET @WorkingCoordList = LEFT(@WorkingCoordList, LEN(@WorkingCoordList) - 1)  -- trim trailing ,
            SET @WorkingCoordList = RTRIM(LTRIM(REPLACE(@WorkingCoordList, '#', ', '))) -- Convert all the hashes to commas
            SET @Processed = 1
        END 

        SET @Count = @Count + 1 
    END 
END

所以对于上面的对象,它应该返回长度为2.因为C是假的,所以想要在计数中排除。

但是现在每当我试图获得长度时它就会返回总长度

     $scope.generated.codesWithBalance = [A:true, B:true, C:false];

任何可以避免键具有错误价值的方式?

1 个答案:

答案 0 :(得分:2)

使用Array.prototype.filter()仅获取具有真值的键。

Object.keys($scope.generated.codesWithBalance).filter(function(key, i, array) {
    return array[key];
}).length;