Как мне динамически изменить ключ в цикле for - PullRequest
0 голосов
/ 17 декабря 2018

Я хочу иметь возможность изменить ключ в цикле for, мне сложно объяснить, что мне нужно, поэтому я сделал демонстрацию на основе https://www.w3schools.com/js/tryit.asp?filename=tryjs_loop_for игровой площадки.

Мне нужноможно менять местами ключи в зависимости от логики, поскольку ключи данных массива будут меняться в зависимости от канала json, поэтому невозможно будет жестко кодировать ключи.

Заранее спасибо

<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Loops</h2>

<p id="demo"></p>

<script>

var cars = [{"name":"BMW", "colour":"blue"}, {"name":"Volvo", 
"colour":"green"}, {"name":"Saab", "colour":"pink"}, {"name":"Ford", 
"colour":"grey"}, {"name":"Fiat", "colour":"yellow"}, {"name":"Audi", 
"colour":"silver"}];

var text = "";
var i;
for (i = 0; i < cars.length; i++) {

var keyToChoose = "name"; /// or I could choose "colour"

text += cars[i].keyToChoose + "<br>";  /// how do I dynamically change 'keyToChoose'?

}
document.getElementById("demo").innerHTML = text;
</script>

</body>
</html>

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

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

<script>

// 1 = name , 2 = colour
var currentKey = 1;

var cars = [{"name":"BMW", "colour":"blue"}, {"name":"Volvo", 
"colour":"green"}, {"name":"Saab", "colour":"pink"}, {"name":"Ford", 
"colour":"grey"}, {"name":"Fiat", "colour":"yellow"}, {"name":"Audi", 
"colour":"silver"}];

var text = "";
var i;
for (i = 0; i < cars.length; i++) {

// the key is chosen based on the currentKey which can be made a global variable and changed dynamically.
var keyToChoose = currentKey === 1 ? "name" : "colour";

text += cars[i].keyToChoose + "<br>";  /// how do I dynamically change 'keyToChoose'?

}
document.getElementById("demo").innerHTML = text;
</script>
0 голосов
/ 17 декабря 2018

Вы используете это следующим образом.

text += cars[i][keyToChoose] + "<br>";

теперь это зависит от значения переменной keyToChoose.

...