【问题标题】:generate js key-value object from string从字符串生成js键值对象
【发布时间】:2016-12-19 04:23:57
【问题描述】:

我有一个非常常见的问题,但有一个转折点,这就是这篇文章的原因:

我想从一个字符串创建一个键值对象。

我的字符串如下所示:

01§§foo§§bar§§someLink

(我可以将分隔符号更改为我想要的任何内容,如果应该以某种方式使用特定符号的非常严格的解决方案)

现在,我想要一个键值对象,关于这个问题的大多数问题已经在字符串中得到了数据对(比如“id:01,title:foo”),但我的问题不是这样。

我想生成这样的东西:

var modules = [
{"ID":"01", "title":"foo", "description":"bar","link":"someLink"},
//more entries from more strings
];

键值对象的原因是,我从数据库中转换了更多这些字符串。我希望它位于键值对象中,以便稍后在我的工具中更轻松地处理数据。

提前谢谢你

【问题讨论】:

    标签: javascript key key-value


    【解决方案1】:

    您可以使用Array#split 作为字符串,使用数组作为键。

    var string = '01§§foo§§bar§§someLink',
        moduleKeys = ["ID", "title", "description", "link"],
        object = {};
    
    string.split('§§').forEach(function (a, i) {
        object[moduleKeys[i]] = a;
    });
    
    console.log(object);

    多个字符串的方法。

    function getData(array) {
        var moduleKeys = ["ID", "title", "description", "link"];
        return array.map(function (string) {
            var object = {};
            string.split('§§').forEach(function (a, i) {
                object[moduleKeys[i]] = a;
            });
            return object;
        });
    }
    
    var strings = ['01§§foo§§bar§§someLink', '02§§foo§§bar§§someLink'];
    console.log(getData(strings));

    【讨论】:

    • 非常感谢,我对这方面的完全不同的方法非常接近,公平地说,这是一团糟。但是由于您非常简单和干净的解决方案,我发现了让我头疼的错误:我的字符串中的链接包含“https://[....]”并且我的浏览器评论了“//”后面的所有内容。 . 这是真正的问题。
    • 嘿,又是我,你好吗....控制台打印出一切正确,万岁。但是当我尝试使用 modules[0] 访问我的对象(我将其命名为模块)时,它说未定义。因此我也无法使用 modules[0].ID 访问它; modules[1] 是一样的
    • 我的object 是一个对象,而不是一个数组。
    • 嗯,再次感谢您。那么我不得不问:如何将具有不同内容的多个字符串(id:01 到 id:x 与 x = 我的数据库中的行数)转换为清晰可辨的对象?这甚至可能与对象一起使用吗?我想我在这里很困惑。
    猜你喜欢
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    相关资源
    最近更新 更多