Печать ключей объектов и значений
Я хочу напечатать пару ключ: значение из объекта 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
Как я могу напечатать значение ключа
Ответы
Ответ 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
}