如何在JavaScript中制作lodash的Pickby函数?我在“您不需要lodash”中找到了以下内容
function pickBy(object) {
const obj = {};
for (const key in object) {
if (object[key] !== null && object[key] !== false && object[key] !== undefined) {
obj[key] = object[key];
}
}
return obj;
}
但想知道其他实现方式
答案 0 :(得分:1)
您可以添加谓词函数,如_.pickBy
描述和使用条目并过滤数据并构建新对象。
function pickBy(object, predicate = v => v) {
return Object.assign(
...Object
.entries(object)
.filter(([, v]) => predicate(v))
.map(([k, v]) => ({ [k]: v }))
);
}
答案 1 :(得分:1)
要创建How to Run Performance Tests on OAuth Secured Apps with JMeter,可以将_.pickBy()
与for...of
一起使用。如果谓词返回值的真实答案,则将键和值分配给结果对象。
注意:如果您需要_.pickBy()
,并且不想整个lodash包,则可以导入Object.entries()
。
function pickBy(object, predicate = v => v) {
const obj = {};
for (const [key, value] of Object.entries(object)) {
if (predicate(value)) obj[key] = value;
}
return obj;
}
console.log(pickBy({ a: 1, b: 0, c: 3 }));
console.log(pickBy({ a: 1, b: 0, c: 3 }, v => v < 3 ));
现在,您可以获取条目,按值过滤并使用pickBy module转换回对象:
const pickBy = (object, predicate = v => v) =>
Object.fromEntries(Object.entries(object).filter(([, v]) => predicate(v)))
console.log(pickBy({ a: 1, b: 0, c: 3 }));
console.log(pickBy({ a: 1, b: 0, c: 3 }, v => v < 3 ));
答案 2 :(得分:0)
存在
var object = { 'a': 1, 'b': '2', 'c': 3 };
并回调仅应用于对象(_.isNumber)值的方法:
Object.keys(obj).reduce((prev, x) => callback(obj[x]) ? { ...prev, [x] : obj[x] } : prev , {});
答案 3 :(得分:0)
当对象为import docx
Traceback (most recent call last):
File "<ipython-input-3-326e089686b3>", line 1, in <module>
import docx
File "C:\Users\T722696\AppData\Roaming\Python\Python37\site-packages\docx.py", line 30, in <module>
from exceptions import PendingDeprecationWarning
ModuleNotFoundError: No module named 'exceptions'
时,Nina的解决方案失败。
这是我的:
{}