Подтвердить что ты не робот

Печать ключей объектов и значений

Я хочу напечатать пару ключ: значение из объекта javascript. Я могу иметь разные ключи в моем массиве, поэтому не могу его жестко привязать к объекту [0].key1

var filters = [{"user":"abc"},{"application":"xyz"}];
console.log(Object.keys(filters[0])[0]); // prints user
var term = (Object.keys(filters[0])[0]);
console.log(filters[0].term); // prints undefined

Как я могу напечатать значение ключа

4b9b3361

Ответ 1

Это ищет свойство term на filters[0]:

console.log(filters[0].term);

То, что вы действительно хотите сделать, это использовать значение term (в вашем примере, которое будет "user") в качестве идентификатора свойства:

console.log(filters[0][term]);

Ответ 2

for (key in filters[0]){
    console.log( key + ": " + filters[0][key]);
}

Или, если вы хотите напечатать все значения фильтров

for (i in filters){
    console.log(i);
    for (key in filters[i]){
        console.log( key + ": " + filters[i][key]);
    }
}

В сообщении @mplungjan

filters.forEach(function(obj, index){
    console.log(index);
    for (var key in obj){
        console.log(key, obj[key]);
    }
});

Ответ 3

цикл for для массива и for..in итерация для объекта:

var filters = [{ "user": "abc"}, {"application": "xyz"}];

for (var i = 0; i < filters.length; i++) { // the plainest of array loops
  var obj = filters[i];
  // for..in object iteration will set the key for each pair
  // and the value is in obj[key]
  for (var key in obj) { 
    console.log(key, obj[key])
  }
}

Ответ 4

Вы можете получить доступ к значению с помощью синтаксиса массива

var filters = [{"user":"abc"},{"application":"xyz"}];
console.log(Object.keys(filters[0])[0]); // prints user
var term = (Object.keys(filters[0])[0]);
console.log(filters[0][term]);// prints abc

Ответ 5

Предположим, что у нас есть объект режима, который имеет некоторые строки в нем, например. Если бы мы MODE.toString() выполняли только альфа, бета, гамма в объекте, то что будет возвращено, это [object Object], что не полезно.

Вместо этого, скажем, мы хотели получить что-то приятное назад, как Normal, Sepia, Psychedelic. Для этого мы могли бы добавить toString: function(){...} к нашему объекту, который будет делать именно это. Один из них заключается в том, что, если мы пропустим все объекты в объекте, функция также будет напечатана, поэтому нам нужно проверить это. В этом примере я проверил бы только toString, однако вместо этого можно было бы использовать другие проверки, такие как ... && typeof MODE[key] == "string"

Ниже приведен пример кода, вызывающий MODE.toString(); возвращает Normal, Sepia, Psychedelic

var MODE = {alpha:"Normal", beta:"Sepia", gamma:"Psychedelic",
    toString: function() {
        var r = "";
        for (var key in MODE) {
            if (MODE.hasOwnProperty(key) && key != "toString") {
                r+= r !== "" ? ", ":"";
                r+= MODE[key];
            }
        }
        return r;
    }
};

Ответ 6

если вы хотите получить все ключи в массиве объектов, вы можете попробовать этот mybe

      let temp = []
        let keys = []
        let result = []
        for (let i = 0; i < data.length; i++) {
          temp = Object.keys(data[i])
          for (let j = 0; j < temp.length; j++) {
            if(!keys.includes(temp[j])){
              keys.push(temp[j])
            }

          }
          temp = []
        }

        for (let i = 0; i < data.length; i++) {
            for (let j = 0; j < keys.length; j++) {
              if(data[i][keys[j]] == undefined){
                data[i][keys[j]] = ""
              }

            }

        }
        return data

или этот, если вы хотите взять ключ из того же массива 2dimension

            function convertObj(arr){
            let arrResult = []
            for (let i = 1; i < arr.length; i++) {
            let obj={}
            for (let j = 0; j < arr[0].length; j++) {
                obj[arr[0][j]] = arr[i][j]

            }
            arrResult.push(obj)  

            }
        return arrResult
        }