我在数组变量中有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数组...
例如,我想用"My Other Value“替换myArray[all][0][image][font]
值
最终目标是更新我的JSON数组并重写一个JSON文件。
编辑:
我在这里找到了解决方案:Dynamically updating a JavaScript object from a string path
发布于 2018-06-04 04:28:24
首先,值得注意的是,这与jQuery无关。
在任何情况下,一种简单的方法是使用Lodash中的_.get()函数。它做的就是你想要的。
这也是您自己编写的一段非常简单的代码,但是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>
https://stackoverflow.com/questions/50669411
复制相似问题