我在js中遇到问题。我有一个函数,例如:
function robePersos() {
var persos = {"player" : "data"};
return persos;
}
然后我有另一个调用robePersos()的函数,如下所示:
function test() {
var d = robePersos();
for(var k in d) {
console.log(k)
}
}
但是什么也没发生。为什么?
function robePersos() {
var persos = {
"player": "data"
};
return persos;
}
function test() {
var d = robePersos();
for (var k in d) {
console.log(k)
}
}
test();
编辑 第一个片段有效。所以,这是我的真实功能:
function robePersos() {
var persos = {};
$.get({
url : 'url',
success : function(data) {
var text = $(data).find("div[menu='perso'] a"); //.clone().children().remove().end().text();
$(text).each(function(){
perso_name = $(this).text();
perso_link = $(this).attr('href');
persos[perso_name] = perso_link;
});
}
});
for(var k in persos) {
console.log(persos[k]);
}
}
robePersos();
如果仅用console.log(persos)替换循环,则可以,但是循环不返回任何内容。为什么?
答案 0 :(得分:1)
如果要同时打印键和值,请在代码中使用以下较小的更改。您的代码仅打印键。
function robePersos() {
var persos = {
"player": "data",
"anotherPlayer": "anotherData"
};
return persos;
}
function test() {
var d = robePersos();
for (var k in d) {
console.log(k, "-" ,d[k]); // change made here. It prints both.
}
}
test();
答案 1 :(得分:1)
尝试使用Object.keys()
function test() {
var d = Object.keys(robePersos());
for (var k in d) {
console.log(k, "-" ,d[k]); // change made here. It prints both.
}
}
Object.keys返回一个数组,该数组的元素是与直接在对象中找到的可枚举属性相对应的字符串。属性的顺序与手动迭代对象的属性时提供的顺序相同。
https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Object/keys