我有一个api,它返回这种形式的嵌套对象:
obj: {
nestedobj1: {
name: 'a',
prop2: 'b',
prop3: 'c',
prop4: 'd'
},
nestedobj2: {
name: 'a',
prop2: 'b',
prop3: 'c',
prop4: 'd'
},
nestedobj3: {
name: null,
prop2: null,
prop3: null,
prop4: null
},
nestedobj4: {
name: null,
prop2: null,
prop3: null,
prop4: null
},
// and so on up to 15 nested objects whose internal properties are null
}
这些嵌套对象应该保存一行表数据。当用户输入字段的详细信息时,需要将输入保存在名称值为null的嵌套对象之一中。如何在javascript中实现此目标?
答案 0 :(得分:1)
如果我理解正确,您想从obj
中提取第一个键/值条目,其中值对象本身包含任何null
值。
一种实现该目标的方法是:
obj
提取Object.entries()
的键/值条目,然后null
值的任何数组(可以使用Object.values()
和.some()
进行操作-请参见下面的代码段),这可以用代码表示为:
const obj={nestedobj1:{name:'a',prop2:'b',prop3:'c',prop4:'d'},nestedobj2:{name:'a',prop2:'b',prop3:'c',prop4:'d'},nestedobj3:{name:null,prop2:null,prop3:null,prop4:null},nestedobj4:{name:null,prop2:null,prop3:null,prop4:null}};
/* Pluck first value from result array, if any */
const [ firstObjectWithNull ] = Object.entries(obj)
/* Filter/find any key/value entries from state object where object values
have any nulls */
.filter(entry => {
const [key, object] = entry;
const objectValues = Object.values(object);
/* With "some()", find the first entry where the values of the object
have a null */
return objectValues.some(value => value === null);
})
.map(entry => {
/* Reconstuct any fiiltered entries to key/value objects */
const [key, object] = entry;
return { [key] : object };
});
console.log(firstObjectWithNull);