我在数组变量中有JSON数据,我想通过字符串键更新此数组中的某些值。 这是我的数组的样子:
{
"all": [
{
"image":{
"URL":"img/img1.jpeg",
"font": "sfsdfsdf",
"color": "sfsdfs"
},
"music": {
"URL":"fsfsfd",
"time": {
"start":"sfsdf",
"end":"qdqsd"
}
}
},
{
"image":{
"URL":"img/img2.jpeg",
"font": "sfsdfsdf",
"color": "sfsdfs"
},
"music": {
"URL":"fsfsfd",
"time": {
"start":"sfsdf",
"end":"qdqsd"
}
}
}
]
}
我有一个第二个数组,其路径已经拆分了我要更新的密钥:
var path = ["all", 0, "image", "font"]
目前我只是循环path
变量并在我的JSON数据中搜索密钥是否存在。
但我绝对不知道如何在不改变数组模式的情况下更新我的JSON数组......
例如,我想将myArray[all][0][image][font]
值替换为“我的其他值”
最终目标是更新我的JSON数组并重写JSON文件。
编辑:
我在这里找到了解决方案:Dynamically updating a JavaScript object from a string path
答案 0 :(得分:0)
首先,值得注意的是,这与jQuery无关。
无论如何,一种简单的方法是使用_.get()中的Lodash功能。它完全符合您的要求。
这也是一段非常简单的代码,但Lodash还有许多其他优秀且经过良好测试的实用程序功能,因此值得您熟悉它。这是一个测试:
let data = {
"all": [
{
"image":{
"URL":"img/img1.jpeg",
"font": "sfsdfsdf",
"color": "sfsdfs"
},
"music": {
"URL":"fsfsfd",
"time": {
"start":"sfsdf",
"end":"qdqsd"
}
}
},
{
"image":{
"URL":"img/img2.jpeg",
"font": "sfsdfsdf",
"color": "sfsdfs"
},
"music": {
"URL":"fsfsfd",
"time": {
"start":"sfsdf",
"end":"qdqsd"
}
}
}
]
};
let path = [ "all", 0, "image", "font" ];
let value = _.get( data, path );
console.log( value );
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>