Циклы For..In в JavaScript - пары ключ-значение - PullRequest
357 голосов
/ 30 августа 2011

Мне было интересно, есть ли способ сделать что-то вроде цикла PHP foreach в JavaScript.Функциональность, которую я ищу, выглядит примерно так: PHP Snippet:

foreach($data as $key => $value) { }

Я просматривал цикл JS for..in, но, похоже, нет способа указать as.Если я сделаю это с помощью «нормального» цикла for (for(var i = 0; i < data.length; i++), есть ли способ получить пары ключ => значение?

Ответы [ 15 ]

1 голос
/ 17 августа 2018
let test = {a: 1, b: 2, c: 3};
Object.entries(test).forEach(([key, value]) => console.log(key, value))

// a 1
// b 2
// c 3
1 голос
/ 30 августа 2011

Ниже приведен пример, который подходит вам ближе.

for(var key in data){
  var value = data[key];    
  //your processing here
}

Если вы используете jQuery, см .: http://api.jquery.com/jQuery.each/

1 голос
/ 30 августа 2011

Для этого вы можете использовать цикл for:

for (var key in bar) {
     var value = bar[key];
}
0 голосов
/ 30 августа 2011
var global = (function() {
   return this;
})();

// Pair object, similar to Python

function Pair(key, value) {
    this.key = key;
    this.value = value;

    this.toString = function() {
       return "(" + key + ", " + value + ")";
    };
}

/**
 * as function
 * @param {String} dataName A String holding the name of your pairs list.
 * @return {Array:Pair} The data list filled
 *    with all pair objects.
 */
Object.prototype.as = function(dataName) {
    var value, key, data;
    global[dataName] = data = [];

    for (key in this) {
       if (this.hasOwnProperty(key)) {
          value = this[key];

          (function() {
             var k = key,
                 v = value;

            data.push(new Pair(k, v));
          })();
       }
    }

    return data;
};

var d = {
   'one': 1,
   'two': 2
};

// Loop on your (key, list) pairs in this way
for (var i = 0, max = d.as("data").length; i < max; i += 1) {
   key = data[i].key;
   value = data[i].value;

   console.log("key: " + key + ", value: " + value);
}

// delete data when u've finished with it.
delete data;
0 голосов
/ 30 августа 2011

да, вы можете иметь ассоциативные массивы также в javascript:

var obj = 
{
    name:'some name',
    otherProperty:'prop value',
    date: new Date()
};
for(i in obj)
{
    var propVal = obj[i]; // i is the key, and obj[i] is the value ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...