Javascript 删除json集合中的json值
我有一个JSON,如下所示Javascript 删除json集合中的json值,javascript,angular,foreach,Javascript,Angular,Foreach,我有一个JSON,如下所示 { "key" : "Balance", "translation" : [ { "language" : "English", "value" : "abc" }, { "language" : "German", "value" : "faq" } ] } 我正在传递语言“English”,应该删除该语言及其值。有很多键,所以我在函数中使用for循环来获得该语言
{
"key" : "Balance",
"translation" : [
{
"language" : "English",
"value" : "abc"
},
{
"language" : "German",
"value" : "faq"
}
]
}
我正在传递语言“English”,应该删除该语言及其值。有很多键,所以我在函数中使用for循环来获得该语言
this._work.forEach( ( translation ) => {
translation.translation.forEach( data => delete data.language[ language ] );
} );
this.\u work
包含上述json值。这里的语言和它的价值不删除。我缺少什么?在您的解决方案中,删除数据。语言[language]
将不起作用,因为数据。语言['English']
未定义。当您希望使用键
从对象而不是数组中的行中删除时,通常使用此删除技术
您可以使用filter
而不是使用forEach
this._work.forEach( ( row ) => {
row.translation = row.translation.filter( translation => translation.language !== translation );
} );
旁注:没有所谓的JSON en js,您拥有的是一个js对象 实际上,您试图从字符串
language
中删除属性“English”,这是错误的,没有意义
例如:
delete data.language["English"]
我建议您使用以下函数Array.prototype.filter
:
let数据={
“键”:“平衡”,
“翻译”:[{
“语言”:“英语”,
“价值”:“abc”
},
{
“语言”:“德语”,
“价值”:“常见问题”
}
]
},
语言=“英语”;
data.translation=data.translation.filter(({language:lang})=>lang!==language);
控制台日志(数据);
delete
指令需要提供要删除的属性。如删除数据.property
或删除数据.language
。在代码中,您提供了数据。语言[language]
指向一个值。如果要删除language属性(如果值为English
),则需要的代码为
this._work.forEach( ( translation ) => {
translation.translation.forEach( data => if (language === data.language) { delete data.language; });
} );
因此,您将获得:
{
"key" : "Balance",
"translation" : [
{
"value" : "abc"
},
{
"language" : "German",
"value" : "faq"
}
]
}
“我有一个JSON如下”-不,那不是。你所拥有的是一个对象->花括号中有什么特定的赋值吗?@Kirataka抱歉,我不明白。你已经在花括号中声明了这个
({language:lang})
。是否有特定原因?@Kirataka这只是为了使用属性语言的解构赋值,没有原因,只是为了一种奇特的方法,否则,在函数filter
的处理程序中,您必须按如下方式访问属性:object.language
{
"key" : "Balance",
"translation" : [
{
"value" : "abc"
},
{
"language" : "German",
"value" : "faq"
}
]
}