不加 !=null
也是 ok 的
可以运行,
-
如果要对编码进行统计长度>0 可以用length函数么?
-
如果要对编码转化为数字>0,可以用户number函数么?
可以,前提是确保笔记有编码这个属性,由于filter或这个where要对所有元素都调用,比如说你之前写的 b.编码.length>0,如果有的b.编码不存在,那自然也没有length属性,就报错了
我用错了,我本来想用 b.编码!==null
的,本来想的复杂一点的,这个就和 b.编码
不一样了,它会过滤出 yaml 区有编码这个属性,但是是空着的笔记,就像这样
---
编码:
---
主要是我自己有一些模板生成的笔记,有些属性是空着后面慢慢补的,要找出它们(没有这个占位的就不找)。就先入为主的以为别人也要这么用来着。
编码我是用在文章中中使用::赋值的
有一些笔记是没有编码的。是因为这个才报错的么
var i = [dv.pages(`"9文献笔记/fn"`).length,dv.pages ('"9文献笔记/fn"').filter(b=> b.编码.length>0).length]
dv.paragraph(`闪念笔记: **${i[0]}** 个`)
dv.paragraph(`已编码笔记: **${i[1]}** `)
你要用 === 喔,提醒一下:null==undefined
是 true,null===undefined
是false
是啊,就是这个原因,要先存在编码,才能编码.length,也可以 b=> b.编码 && b.编码.length>0
搞定,b.编码 && b.编码.length>0的 496是正确的
var i = [dv.pages(`"9文献笔记/fn"`).length,dv.pages ('"9文献笔记/fn"').filter(b=> b.编码!=null).length,dv.pages ('"9文献笔记/fn"').filter(b=> b.编码 && b.编码.length>0).length]
dv.paragraph(`闪念笔记: **${i[0]}** 个`)
dv.paragraph(`已编码笔记: **${i[1]}** `)
dv.paragraph(`已编码笔记: **${i[2]}** `)
两个等号比较会产生隐式转换,比如 true==1
中,true 会转换成 1,然后 1==1
输出 true;如果是 true===1
,就是 false
b.编码 && b.编码.length>0,
编码::
后面是空格还是null呢? 如果没有空格,
length没有大于>0,不会计算的
结果就是0啊. length>0,没有满足啊
en, 第三个统计是的编码不为空的情况
可能我表述不清楚。两个笔记,一个有 编码:: 12
,不为空;一个仅有 编码::
,为空。第三个统计是的编码不为空的情况,应该有 1 个笔记,即 编码:: 12
的笔记,而不是 0 个。
我把定义重新定义了一下:
var i = [dv.pages(`"9文献笔记/fn"`).length,dv.pages ('"9文献笔记/fn"').filter(b=> b.编码!=null).length,dv.pages ('"9文献笔记/fn"').filter(b=> b.编码 && b.编码.length>0).length]
dv.paragraph(`闪念笔记: **${i[0]}** 个`)
dv.paragraph(`有编码笔记(包含有编码为空的笔记): **${i[1]}** `)
dv.paragraph(`已编码笔记(仅包括不为空的笔记): **${i[2]}** `)
有一说一,应该避免重复属性的出现,但是它确实.length>0
主要是一般如果没有重复定义属性的话,用 dv.pages(`"9文献笔记/fn"`).filter(b=> b.编码).length
应该已经得到正确结果了,但楼主要用 b=> b.编码 && b.编码.length>0
才能得到正确结果,我觉得需要再问问。
前面说了原因, 单独使用:b.编码.length>0会报错,有一部分笔记没有编码
是说用 .filter(b=> b.编码).length
就好啦。
不是 .filter(b=> b.编码.length>0).length
。
在没有重复定义属性的情况下,.filter(b=> b.编码).length
直接返回的就是编码不为空的值。
不包括有 编码::
但没有值的。
也不包括没有 编码::
的。
只是楼主你截图的结果和一般情况不一样,所以我猜可能你的笔记结构和一般的也不一样。
一般用不到 .length>0
这种筛选,而且这种筛选是有其他问题的,比如 #25 提到的情况。
我突然想到,避免重复属性的出现是因为我记得之前多个重复属性会覆盖,你也不知道会得到哪个结果,现在多个属性会构成列表,那不就方便结构化笔记了吗,比如这样
## A
性质::
优点::
缺点::
## B
性质::
优点::
缺点::