我想从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
如何打印密钥的值
答案 0 :(得分:21)
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]);
}
}
filters.forEach(function(obj, index){
console.log(index);
for (var key in obj){
console.log(key, obj[key]);
}
});
答案 1 :(得分:5)
这是在term
上寻找filters[0]
属性:
console.log(filters[0].term);
您真正想要做的是使用term
的值(在您的示例中为"user"
)作为属性标识符:
console.log(filters[0][term]);
答案 2 :(得分:2)
for (var i=0;i<filters.length;i++) {
var obj = filters[i];
for (var o in obj) console.log(o,obj[o])
}
答案 3 :(得分:2)
您可以使用数组语法
访问该值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
答案 4 :(得分:0)
假设我们有一个模式对象,例如其中包含一些字符串。如果我们在对象中只使用alpha,beta,gamma进行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;
}
};
答案 5 :(得分:0)
如果要获取对象数组中的所有键,可以尝试使用此键。
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
或如果要从同一数组2维获取密钥,则此键
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
}
答案 6 :(得分:0)
如果要打印键和值(即使是嵌套对象),也可以尝试使用此功能:
function printObjectData(obj, n = 0){
let i = 0;
var properties = Object.keys(obj);
let tab = "";
for(i = 0; i < n; i++)
tab += "\t";
for(i = 0; i < properties.length; i++){
if(typeof(obj[properties[i]]) == "object"){
console.log(tab + properties[i] + ":");
printObjectData(obj[properties[i]], n + 1);
}
else
console.log(tab + properties[i] + " : " + obj[properties[i]]);
}
}
printObjectData(filters);
,解决方案将如下所示:
0:
user : abc
1:
application : xyz
,如果要删除0:和1: 然后只需删除
console.log(tab + properties[i] + ":");
if语句之后