问题描述
假设我有以下对象:
const obj = {
a: null,b: null,c: 1
}
我当前的尝试有效,但是是硬编码的,不是动态的:
const data = obj.a ? {a: obj.a} : (obj.b ? {b: obj.b} : {c: obj.c})
解决方法
您可以使用 Object.keys
来获取对象的键。然后,使用 find
返回具有非空值的第一个键。
const obj = {
a: null,b: null,c: 1
}
const keyWithValue = Object.keys(obj).find((key) => obj[key] !== null);
return { [keyWithValue]: obj[keyWithValue] };
,
你的意思是这样吗?
const obj = {
a: null,c: 1
}
const data = {}
for(let key in obj) {
if(obj[key]) data[key] = obj[key]
}
console.log(data)
您可以遍历对象键并在找到第一个不为空的值后使用 break 停止循环。 也许,像这样:
const obj = {
a: null,c: 1
}
let notNullValue;
for(let prop in obj) {
if(obj[prop] !== null){
notNullValue = {[prop]: obj[prop]};
break;
}
}
console.log(notNullValue);