我有一个看起来像这样的对象:
{
alphabet: {
'$': {
id: '11',
href: 'abc'
},
mydata: [[Object]],
status: ['22']
}
}
是否可以以某种方式删除$
,以便对象看起来像这样:
{
alphabet: {
id: '11',
href: 'abc'
mydata: [[Object]],
status: ['22']
}
}
我是JavaScript和Node JS的新手,并且正在努力解决这个问题。我试过了delete object.$;
,但它没有做任何事情。我很确定我误解了这个功能。
任何帮助将不胜感激!
答案 0 :(得分:2)
克隆$
并使用object.assign
合并克隆和原始对象
var obj = {
alphabet: {
'$': {
id: '11',
href: 'abc'
},
mydata: [''],
status: ['22']
}
};
var clone = obj.alphabet["$"];
delete obj.alphabet["$"];
Object.assign(obj,clone);
console.log(obj);

答案 1 :(得分:0)
您的意思是将$
对象放入根对象中。
如果密钥名称始终为$
,则可以获取$
对象中的键值,如下所示:
let alphabet: {
'$': {
id: '11',
href: 'abc'
},
mydata: [[Object]],
status: ['22']
}
for (let key in alphabet['$']) {
alphabet[key] = alphabet['$'][key]
// maybe you should consider the duplicate key.
}
答案 2 :(得分:0)
这是一个函数,它将遍历对象中属性的属性并将其展平。
function flattenProp(obj, prop) {
var key;
for(key in obj[prop]) {
obj[key] = obj[prop][key];
}
delete obj[prop];
};
下面是一个使用它的例子。
var data = {
alphabet: {
'$': {
id: '11',
href: 'abc'
},
mydata: [[Object]],
status: ['22']
}
};
console.log(data);
flattenProp(data.alphabet, '$');
console.log(data);
function flattenProp(obj, prop) {
var key;
for(key in obj[prop]) {
obj[key] = obj[prop][key];
}
delete obj[prop];
};

答案 3 :(得分:0)
此解决方案非常简单 -
var obj = {
alphabet: {
'$': {
id: '11',
href: 'abc'
},
mydata: [[Object]],
status: ['22']
}
}
var temp = obj.alphabet.$
//copies the internal object to main one
for(var i=0;i<Object.keys(temp).length;i++) {
obj.Object.keys(temp)[0] = temp[Object.keys(temp)[0]];
}
delete obj.alphabet.$ //remove the old object from it
答案 4 :(得分:0)
当然有可能。 假设您的数据变量(JSON)命名为&#34;数据&#34;:
var data = JSON.parse("your json string");
所以数据看起来像这样:
var data = {
alphabet: {
'$': {
id: '11',
href: 'abc'
},
mydata: [[Object]],
status: ['22']
}
}
我们只需迭代data.alphabet.$
,将其所有属性存储到其父级(data.alphabet
),然后删除data.alphabet.$
:
for(var propname in data.alphabet["$"]) {
var propvalue = data.alphabet["$"][propname];
data.alphabet[propname] = propvalue;
}
delete data.alphabet.$;
这是一个片段:
var data = JSON.parse(`{
"alphabet": {
"$": {
"id": "11",
"href": "abc"
},
"mydata": {},
"status": ["22"]
}
}`)
for(var propname in data.alphabet["$"]) {
var propvalue = data.alphabet["$"][propname];
data.alphabet[propname] = propvalue;
}
delete data.alphabet.$;
document.body.innerHTML = `<pre>${JSON.stringify(data, null, 4)}</pre>`
&#13;