如何获取引用对象及其子对象中特定键的值?



在表单的输出中,我有一个对象,其中包含字段名称和引用值的键"值"。该字段也可以是具有另一个键"值"的对象。我只想获取"值"中包含的值。下面是示例:

原始对象:

{
inputA: 1354,
inputB: "String Value",
inputC: [
{
value: 1,
label: "Value 1"
},
{
value: 2,
label: "Value 2"
},
{
value: 4,
label: "Value 3"
}
],
inputD: {
value: 16,
label: "Value 16"
},
inputE: {
value: 1,
label: "Value 1"
},
inputF: {
subInputA: {
value: "String Value",
label: "Value of Value"
},
subInputB: {
value: 1,
label: "Value 1"
}
}
}

我想得到的结果:

{
inputA: 1354,
inputB: "String Value",
inputC: [1,2,3],
inputD: 16,
inputE: 1,
inputF: {
subInputFA: "String Value",
subInputFB: 1
}
}

有一个代码可以按照你的要求去做。至少预期的输出应该是什么样子。

//this is your original object
let originalObject = {
inputA: 1354,
inputB: "String Value",
inputC: [
{ value: 1,  label: "Value 1"  },
{ value: 2,  label: "Value 2"  },
{ value: 4,  label: "Value 3"  }
],
inputD: { value: 16,  label: "Value 16" },
inputE: { value: 1,   label: "Value 1"  },
inputF: {
subInputA: { value: "String Value", label: "Value of Value"  },
subInputB: { value: 1,    label: "Value 1"  }
}
}
//expected output
/*
{
inputA: 1354,
inputB: "String Value",
inputC: [1,2,3],
inputD: 16,
inputE: 1,
inputF: {
subInputFA: "String Value",
subInputFB: 1
}
}
*/
//my code
let ans = {}
function digDeep (obj){
if(typeof obj ==='number' || typeof obj === 'string') return obj
else if( typeof obj === 'object' && obj.length===undefined){
let keys = Object.keys(obj)
if(keys.indexOf('value')!=-1) return obj.value
let pom = {}
keys.forEach(key=> pom[key]=digDeep(obj[key]) )
return pom
}else if( typeof obj ==='object' && obj.length>0) return obj.map(el=>digDeep(el) )
}
ans = digDeep(originalObject)
//print the output
console.log(ans)

输出:

{ inputA: 1354,
inputB: 'String Value',
inputC: [ 1, 2, 4 ],
inputD: 16,
inputE: 1,
inputF: { subInputA: 'String Value', subInputB: 1 } }

最新更新