{other:1}=>[{name:"other",value:1}]
现在想实现上面的这种转换,求大神指点下
var a = {other: 1};
var b = Object.keys(a).map(function(item) {
return {
name: item,
value: a[item]
}
})
console.log(b)
首先这玩意儿不叫JSON
,JSON
是JavaScript Object Notation的缩写,{ key: value }
就是一个普通的对象(object
)。你会问这个问题说明你对js不熟悉,因此我猜测你这个需求很可能是没有必要的,你不妨说说你为什么要做这个转换,想遍历一个对象的所有键值对可以用for-in
遍历。回到这个问题本身,用最新的语法可以这么写:
let obj = { other: 1 }
let entries = Object.keys(obj).map(key => { name: key, value: obj[key] })
实际上,新的提案中有个Object.entries
方法,使用方法参见MDN文档,用这个函数你也能获取到一个数组,但长成这样:[ [ 'other', 1 ] ]
,这个数组的一个元素称为一个entry
,一个entry
也是一个数组,这个数组的第一个元素是对象的一个键(对应于你的结构的name
),第二个元素是这个对象的这个键对应的值(对应于你的结构的value
),你想要把entries
转成你那种格式可以这样:
let obj = { other: 1 }
let entries = Object.entries(obj).map(entry => { name: entry[0], value: entry[1] })
但是一般没有这个必要,直接使用Object.entries
的结果即可。
const obj = {other:1};
let newObj = Object.keys(obj).reduce((arr,item)=>{
return (arr.push({
name: item,
value: obj[item]
}),arr)
},[])
console.log(newObj)
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决