我有一个名为obj的对象,它有几个不同的键:message、msg或error。
使用lodash的_.intersection和_.keys,我可以在obj中获得也在数组['message', 'msg', 'error']中的键。
const message = _.intersection(_.keys(obj), ['message', 'msg', 'error']);如果obj为:
const obj = {
msg: 'hello'
};那么message应该是一个只有一个字符串的数组:
message: ['msg'];如何使用Lodash将message作为键的字符串值?
message: 'hello';发布于 2020-03-05 08:50:40
使用lodash的_.pick()方法从数组中获取具有交叉键的对象也是可行的。然后,您可以使用_.values()从该对象中获取一个值数组,并对该数组中的第一个值执行destructure操作:
const obj = {
msg: 'hello'
};
const [message = 'default'] = _(obj).pick(['message', 'msg', 'error']).values();
console.log(message);<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>
发布于 2020-03-05 08:43:35
使用交点的结果作为对象的动态关键点。
const obj = {
msg: 'hello'
};
const key = _.intersection(_.keys(obj), ['message', 'msg', 'error']);
const message = key.length == 1 ? [obj[key[0]]] : [];
console.log(message);
发布于 2020-03-05 08:43:37
为什么不直接使用Object.entries呢?你可以使用一个表达式来判断这个键是否等于'msg‘。
const obj = {
msg: 'hello'
};
for (let [key, value] of Object.entries(obj)) {
if (key === 'msg') {
console.log(value);
} else if (key === 'message') {
// Do something for key 'message'
} else if (key === 'error') {
// Do something for key 'error'
} else {
// Else
}
}
或者不加下划线的JS如何使用reduce。
const obj = {
msg: 'hello',
};
const result = Object.values(obj).reduce((key, value) => {
if (key === 'msg') {
console.log(value);
} else if (key === 'message') {
// Do something for key 'message'
} else if (key === 'error') {
// Do something for key 'error'
} else {
// Else
}
});
console.log(result);
https://stackoverflow.com/questions/60536630
复制相似问题