在javascript中,如何用对象的类型替换对象属性的值? 让我们考虑一个变量OBJ,它定义为: var obj = { one: "I am a String", two: {}, three: 3, four: [] }

在javascript中,如何用对象的类型替换对象属性的值? 让我们考虑一个变量OBJ,它定义为: var obj = { one: "I am a String", two: {}, three: 3, four: [] },javascript,object,types,Javascript,Object,Types,现在,让我们设想一个名为replaceWithType的函数,它可以像这样使用: var type = replaceWithType(obj) console.log(JSON.stringify(type)) 这将产生: {"one":"string","two":"object","three":"number","four":"array"} 因此,您可以看到,replaceWithType,将值替换为它们的类型,但是我不理解如何构建这个函数。那么,您能给我一个如何实现这一点的快速演

现在,让我们设想一个名为replaceWithType的函数,它可以像这样使用:

var type = replaceWithType(obj)
console.log(JSON.stringify(type))
这将产生:

{"one":"string","two":"object","three":"number","four":"array"}
因此,您可以看到,replaceWithType,将值替换为它们的类型,但是我不理解如何构建这个函数。那么,您能给我一个如何实现这一点的快速演示吗?

使用和:

常量对象={ 一:我是一根弦, 二:{}, 三:三,, 四:[] } const result=Object.entriesobj.reducea[k,v]=>{ a[k]=Array.isArrayv?'Array':v的类型; 返回a; }, {};
console.logresult 您可以将所有条目与其类型进行映射,并从中获取一个新对象

var obj={1:I是字符串,2:{},3:3,4:[]}, 结果=Object.fromEntriesObject .Entriesbj .map[k,v]=>[k,Array.isArrayv?'Array':v的类型] ; console.logresult; 我们在这里做的是:

首先使用Object.keys函数从 对象,以便我们可以遍历它们

然后使用array.prototype.map函数遍历每一个。您可以将.map视为更方便的for循环

最后,我们通过 使用返回值类型的typeof运算符。这个语法obj[value]和说obj.value是一样的


下面是一个最新的完整示例:未定义、布尔值、数字、字符串、BigInt、符号、null、对象、函数数组不在其中,但我还是将其包括在内:

var obj={ 一:我是一根弦, 二:{}, 三:三,, 四:[], 五:=>{}, 六:空, 七:未定义, 八:对,, 9:1n, 十:Symbol1, }, 结果=Object.fromEntries Object.entriesobj.map[k,v]=>{ let型; 切换为真{ case Array.isArrayv: 类型=数组; 打破 案例v==空: type=null; 打破 违约: 类型=v型; } 返回[k,type]; } ; console.logresult;你试过obj[objKey]=obj[objKey]的类型吗?
var obj = {
    one: "I am a String",
    two: {},
    three: 3,
    four: []
}

Object.keys(obj).map((key) => {
    obj[key] = typeof obj[key]
})

console.log(obj)