【问题标题】:Javascript make data structure with dynamic variablesJavascript使用动态变量制作数据结构
【发布时间】:2018-10-26 12:04:17
【问题描述】:
[
    {
        "day": 0,
        "periods": [
            {
                "start": "01:00",
                "end": "02:00",
                "title": "",
                "backgroundColor": "rgba(254, 0, 0, 0.7)",
                "borderColor": "rgb(42, 60, 255)",
                "textColor": "rgb(0, 0, 0)"
            },
            {
                "start": "02:30",
                "end": "03:00",
                "title": "",
                "backgroundColor": "rgba(254, 0, 0, 0.7)",
                "borderColor": "rgb(42, 60, 255)",
                "textColor": "rgb(0, 0, 0)"
            }
        ]
    },
    {
        "day": 1,
        "periods": [
            {
                "start": "01:00",
                "end": "02:00",
                "title": "",
                "backgroundColor": "rgba(254, 0, 0, 0.7)",
                "borderColor": "rgb(42, 60, 255)",
                "textColor": "rgb(0, 0, 0)"
            }
        ]
    },
    {
        "day": 2,
        "periods": [
            {
                "start": "01:00",
                "end": "01:30",
                "title": "",
                "backgroundColor": "rgba(254, 0, 0, 0.7)",
                "borderColor": "rgb(42, 60, 255)",
                "textColor": "rgb(0, 0, 0)"
            }
        ]
    },
    {
        "day": 3,
        "periods": [
            {
                "start": "02:00",
                "end": "02:30",
                "title": "",
                "backgroundColor": "rgba(254, 0, 0, 0.7)",
                "borderColor": "rgb(42, 60, 255)",
                "textColor": "rgb(0, 0, 0)"
            }
        ]
    },
    {
        "day": 4,
        "periods": [
            {
                "start": "01:00",
                "end": "01:30",
                "title": "",
                "backgroundColor": "rgba(254, 0, 0, 0.7)",
                "borderColor": "rgb(42, 60, 255)",
                "textColor": "rgb(0, 0, 0)"
            }
        ]
    },
    {
        "day": 5,
        "periods": [
            {
                "start": "01:30",
                "end": "02:00",
                "title": "",
                "backgroundColor": "rgba(254, 0, 0, 0.7)",
                "borderColor": "rgb(42, 60, 255)",
                "textColor": "rgb(0, 0, 0)"
            },
            {
                "start": "03:00",
                "end": "03:30",
                "title": "",
                "backgroundColor": "rgba(254, 0, 0, 0.7)",
                "borderColor": "rgb(42, 60, 255)",
                "textColor": "rgb(0, 0, 0)"
            }
        ]
    },
    {
        "day": 6,
        "periods": []
    }
]

如何在Javascript中用动态变量制作这样的数据结构? 让我们说: 我需要在 day:6 或 day:2 中更改 period[start] 和 period[end] 时间 我想制作像数据一样的新 data2 结构,但要使用我的时间变量。 像这样:

for (var i=0; i <arr.legth; ++i){

    data2="'[{"day":MYVARIABLE1,"periods":[{"start":"MYVARIABLE2","end":"MYVARIABLE3",  ...}]';

}

【问题讨论】:

  • 你希望通过这个实现什么目标?
  • 我认为您正在尝试创建对象,然后您必须将它们附加到主数组。但是你到底想达到什么目的呢?
  • 我想更改 period[start]="01:00"] where day=2
  • 解析它,然后循环遍历它并找到您需要更改的内容?或者只是解析它并设置你的变量?除非你给我们一些背景信息,否则有 1000 种方法可以做到这一点。
  • @Ele: 如果data2 是一个字符串,则不是...

标签: javascript


【解决方案1】:

有点不清楚您要达到的目标。例如,属性“periods”的值是一个数组。所以,periods[start] 没有多大意义,因为不太清楚您是要使用 start 属性的新值更新所有期间还是只是特定期间或什么?

convert your JSON into a dictionary 可能是个好主意,所以你可以这样做:

var day = 2;
data[day].periods[???].start = "01:00";

我故意留下了一些问号,让你看到句号是一个数组,你必须以这种方式处理它。

【讨论】:

    【解决方案2】:

    请看下面的测试代码。

    你可以很容易地理解它。最后,我在此之后使用了您提供的代码。该代码侧重于变量和字符串的连接。

    还有其他方法。如果您需要更多帮助,可以发表评论。

    > var a = 67
    undefined
    > var name = 'JavaScript'
    undefined
    >
    > a + ""
    '67'
    > a + name
    '67JavaScript'
    > "'" + name + "'"
    '\'JavaScript\''
    >
    > '"' + name + '"'
    '"JavaScript"'
    >
    > var obj = '{ "name": "Rishikesh", "age": 26}'
    undefined
    > obj
    '{ "name": "Rishikesh", "age": 26}'
    >
    > typeof obj
    'string'
    >
    > // Coversion in real JS object
    undefined
    > realObj = JSON.parse(obj);
    { name: 'Rishikesh', age: 26 }
    >
    > realObj.name
    'Rishikesh'
    >
    > realObj.age
    26
    >
    

    注意:确保您正确使用了引号'"

    // A sample test code 
    var arr = [67]; // Array of 1 item
    
    var MYVARIABLE1 = 'Wednesday'
    var MYVARIABLE2 = '01:05'
    var MYVARIABLE3 = '02:06'
    var data2 = null;
    
    for (var i=0; i < arr.length; ++i){
        data2 = '[{' +
                '"day": "' + MYVARIABLE1 + '",' + 
                '"periods":[{' +
                        '"start":"' + MYVARIABLE2 + '",' +
                        '"end":"' + MYVARIABLE3 + '"' +
                        '}]' + 
              '}]';
    }
    
    console.log(data2)
    // [{"day": "Wednesday","periods":[{"start":"01:05","end":"02:06"}]}]
    

    【讨论】:

      猜你喜欢
      • 2016-04-14
      • 2013-09-23
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-01
      • 2018-09-01
      相关资源
      最近更新 更多