所以我有一个对象,我正在循环但是,它输出了我需要的一大堆东西,但很多它我也不需要我正在设计的页面。如何通过密钥删除或拉出我需要的东西?或者有更简单的方法吗?
objectToText: function(obj) {
var text = ""
for (var key in obj) {
text += "<b>" + key + " (" + typeof obj[key] + "):</b> ";
if (typeof obj[key] == "object") {
text += "[<br>";
for (var i = 0; i < obj[key].length; ++i) {
text += this.objectToText(obj[key][i]);
}
text += "<br>]<br>";
} else {
text += obj[key] + "<br>";
}
}
return text;
}
答案 0 :(得分:1)
你可以像这样改变你的方法(注意我修改了html输出以提供嵌套,但这不是绝对必要的):http://jsfiddle.net/Shmiddty/QUXgE/
function objectToText(obj, keys) {
if (obj == undefined) return "";
var keys = keys || ['length', 'width', 'height', 'banana'];
var text = "";
var key;
text += "<div>";
for (var i = 0; i < keys.length; i++) {
key = keys[i];
if (key in obj) {
text += key + " (" + typeof obj[key] + "):";
if (typeof obj[key] == "object") {
text += "<div>{" + objectToText(obj[key], keys) + "}</div>";
} else {
text += " " + obj[key] + "<br>";
}
}
}
text += "</div>";
return text;
}
它可以像这样使用:
var obj = {
length: 100,
width: {
length: 100,
width: 50,
nestedSecret: 0,
banana:{
length: 50,
width:25,
ultraSecret:42
}
},
height: 50,
superSecret: '007'
};
var keys = ["superSecret", "width", "nestedSecret", "banana", "ultraSecret"];
document.getElementById('output').innerHTML = objectToText(obj); // use default keys
document.getElementById('output2').innerHTML = objectToText(obj, keys); // use custom keys
答案 1 :(得分:0)
我不知道您究竟在寻找什么,但确定您可以通过密钥访问。例如:
var obj = {
"something" : 1,
"something_else" : 2,
"some_array" : [10, 20, 30],
"nested_obj" : { "thekey" : 100 }
}
console.log(obj.something); // 1;
console.log(obj.something_else); // 2;
console.log(obj.some_array[0]); // 10;
console.log(obj.nested_obj.thekey); // 100;
// Or:
console.log(obj['something']); // 1;
console.log(obj['something_else']); // 2;
console.log(obj['some_array'][0]); // 10;
console.log(obj['nested_obj']['thekey']); // 100;
或者,如果通过“您不需要的东西”表示对象的继承属性/方法,则可以使用Object.hasOwnProperty
进行检查。