我想写一些过滤器逻辑,其中一个对象返回其长度,其中只包含具有真值的键。
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];
任何可以避免键具有错误价值的方式?
答案 0 :(得分:2)
使用Array.prototype.filter()
仅获取具有真值的键。
Object.keys($scope.generated.codesWithBalance).filter(function(key, i, array) {
return array[key];
}).length;