让我们假设我有以下对象:
const obj = {
a: null,
b: null,
c: 1
}
我想提取的是第一个非空对,这里是{c: 1}
?
我目前的尝试有效,但是硬编码的,不是动态的:
const data = obj.a ? {a: obj.a} : (obj.b ? {b: obj.b} : {c: obj.c})
您可以使用Object.keys
来获取对象的键。然后,使用find
返回具有非null值的第一个密钥。
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,
b: null,
c: 1
}
const data = {}
for(let key in obj) {
if(obj[key]) data[key] = obj[key]
}
console.log(data)
您可以迭代对象键,并在找到第一个非null值后使用break停止循环。也许是这样的:
const obj = {
a: null,
b: null,
c: 1
}
let notNullValue;
for(let prop in obj) {
if(obj[prop] !== null){
notNullValue = {[prop]: obj[prop]};
break;
}
}
console.log(notNullValue);