Доступ к данным объектов с помощью строки в javascript [duplicate]

Я искал / googled несколько веб-страниц в javascript sleep / wait ... и нет ответа, если вы хотите, чтобы javascript «RUN, DELAY, RUN» ... то, что большинство людей получили, было либо: «RUN, RUN (бесполезный материал), RUN "или" RUN, RUN + delayed RUN "....

Итак, я съел некоторые гамбургеры и подумал ::: вот решение, которое работает ... но вы нужно рубить ваши коды ... ::: да, я знаю, это просто легче читать рефакторинг ... все еще ...

// ........ ................................. // example1:

<html>
<body>
<div id="id1">DISPLAY</div>

<script>
//javascript sleep by "therealdealsince1982"; copyrighted 2009
//setInterval
var i = 0;

function run() {
    //pieces of codes to run
    if (i==0){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" is ran</p>"; }
    if (i==1){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" is ran</p>"; }
    if (i==2){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" is ran</p>"; }
    if (i >2){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" is ran</p>"; }
    if (i==5){document.getElementById("id1").innerHTML= "<p>all code segment finished running</p>"; clearInterval(t); } //end interval, stops run
    i++; //segment of code finished running, next...
}

run();
t=setInterval("run()",1000);

</script>
</body>
</html>

//. ................................... // пример2:

<html>
<body>
<div id="id1">DISPLAY</div>

<script>
//javascript sleep by "therealdealsince1982"; copyrighted 2009
//setTimeout
var i = 0;

function run() {
    //pieces of codes to run, can use switch statement
    if (i==0){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" ran</p>"; sleep(1000);}
    if (i==1){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" ran</p>"; sleep(2000);}
    if (i==2){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" ran</p>"; sleep(3000);}
    if (i==3){document.getElementById("id1").innerHTML= "<p>code segment "+ i +" ran</p>";} //stops automatically
    i++;
}

function sleep(dur) {t=setTimeout("run()",dur);} //starts flow control again after dur

run(); //starts
</script>
</body>
</html>

/ / ................. example3:

<html>
<body>
<div id="id1">DISPLAY</div>

<script>
//javascript sleep by "therealdealsince1982"; copyrighted 2009
//setTimeout
var i = 0;

function flow() {
    run(i);
    i++; //code segment finished running, increment i; can put elsewhere
    sleep(1000);
    if (i==5) {clearTimeout(t);} //stops flow, must be after sleep()
}

function run(segment) {
    //pieces of codes to run, can use switch statement
    if (segment==0){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
    if (segment==1){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
    if (segment==2){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
    if (segment >2){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
}

function sleep(dur) {t=setTimeout("flow()",dur);} //starts flow control again after dur

flow(); //starts flow
</script>
</body>
</html>

// .............. example4:

<html>
<body>
<div id="id1">DISPLAY</div>

<script>
//javascript sleep by "therealdealsince1982"; copyrighted 2009
//setTimeout, switch
var i = 0;

function flow() {
    switch(i)
    {
        case 0:
            run(i);
            sleep(1000);
            break;
        case 1:
            run(i);
            sleep(2000);
            break;
        case 5:
            run(i);
            clearTimeout(t); //stops flow
            break;
        default:
            run(i);
            sleep(3000);
            break;
    }
}

function run(segment) {
    //pieces of codes to run, can use switch statement
    if (segment==0){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
    if (segment==1){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
    if (segment==2){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
    if (segment >2){document.getElementById("id1").innerHTML= "<p>code segment "+ segment +" is ran</p>"; }
    i++; //current segment of code finished running, next...
}

function sleep(dur) {t=setTimeout("flow()",dur);} //starts flow control again after dur

flow(); //starts flow control for first time...
</script>
</body>
</html>
131
задан JAAulde 18 June 2015 в 23:37
поделиться

7 ответов

var jsonVariable = {};
for(var i=1; i < 3; i++) {
  jsonVariable[i + 'name'] = 'name' + i;        
}
137
ответ дан closure 25 August 2018 в 23:13
поделиться

С ECMAScript 6 вы можете использовать имена свойств переменных с синтаксисом литерала объекта, например:

var keyName = 'myKey';
var obj = {
              [keyName]: 1
          };
obj.myKey;//1

Этот синтаксис доступен в следующих новых браузерах:

Edge 12+ (поддержка IE), FF34 +, Chrome 44+, Opera 31+, Safari 7.1 +

( https://kangax.github.io/compat -table / es6 / )

Вы можете добавить поддержку старых браузеров, используя транспилер , такой как babel . Легко трансформировать весь проект, если вы используете пакетный модуль, например rollup или webpack .

79
ответ дан chiliNUT 25 August 2018 в 23:13
поделиться
6
ответ дан Knut Hering 25 August 2018 в 23:13
поделиться

проверьте это

jsonVariable = {};
for(i=1; i<=3; i++) {        
 jsonVariable[i]=i+'name';
}
document.writeln(jsonVariable[1]);
document.writeln(jsonVariable[2]);
document.writeln(jsonVariable[3]);

​
-1
ответ дан Murali Prasanth 25 August 2018 в 23:13
поделиться

Вы должны использовать [] нотацию для динамического набора ключей.

var jsonVariable = {};
for(i=1; i<3; i++) {        
 var jsonKey  = i+'name';
 jsonVariable[jsonKey] = 'name1';

}

Теперь в ES6 вы можете использовать синтаксис объектного литерала для динамического создания ключей объектов, просто оберните переменную в []

var key  = i + 'name';
data = {
    [key] : 'name1',
}
106
ответ дан Musa 25 August 2018 в 23:13
поделиться
jsonVariable = {}
for(i=1; i<3; i++) {        
   var jsonKey  = i+'name';
   jsonVariable[jsonKey] = 'name1'
}

это будет похоже на

    jsonVariable = {
    1name : 'name1'
    2name : 'name1'
}
0
ответ дан suman 25 August 2018 в 23:13
поделиться

Это способ динамически установить значение

var jsonVariable = {};
for (var i = 1; i < 3; i++) {
    var jsonKey = i + 'name';
    jsonVariable[jsonKey] = 'name' + i;
}
19
ответ дан timc 25 August 2018 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: