首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery使用字符串键更新JSON

jQuery使用字符串键更新JSON
EN

Stack Overflow用户
提问于 2018-06-04 02:00:57
回答 1查看 148关注 0票数 0

我在数组变量中有JSON数据,我想通过字符串键更新这个数组中的一些值。下面是我的数组:

代码语言:javascript
复制
{
    "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"
                }
            }
        }
    ]
}

我有第二个数组,其中包含我想要更新的键的路径,如下所示:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

发布于 2018-06-04 04:28:24

首先,值得注意的是,这与jQuery无关。

在任何情况下,一种简单的方法是使用Lodash中的_.get()函数。它做的就是你想要的。

这也是您自己编写的一段非常简单的代码,但是Lodash还有许多其他良好且经过良好测试的实用函数,因此值得您花时间熟悉它。下面是一个测试:

代码语言:javascript
复制
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 );
代码语言:javascript
复制
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50669411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档