我有一个只包含简单键值对的对象,我想过滤掉任何具有falsey值的属性。这可能是使用Array.prototype.filter()吗?
答案 0 :(得分:2)
这是否可以使用Array.prototype.filter()?
是,但不是直接:您可以在使用var arrayOfTruthyValues = Object.keys(obj).filter(key => obj[key]);
或类似内容后执行此操作:
filter
结果是一系列真值。
如果您希望最终结果是对象,将reduce
与var newObj = Object.keys(obj)
.filter(key => obj[key])
.reduce((newObj, key) => {
newObj[key] = obj[key];
return newObj;
}, {});
合并可以做到:
reduce
这主要只是使用filter
作为循环结构(因为我们实际上从未改变累加器值,我们只是继续返回相同的对象),这有时被认为是“滥用”。 :-)这意味着我们可以在没有if
部分的情况下完成,只需在reduce
中添加Object.keys
,但是......
请注意,Object.getOwnPropertyNames
仅包含对象的拥有,可枚举属性。如果您想要自己的属性,即使它们不可枚举,也可能是String fileName = "20170123-100046_20170217154436_A20170217210502";
fileName = filename.Substring(filename.IndexOf("_") + 1);
string fname;
fname=fileName.Substring(0, fileName .IndexOf("_"))
。