0

所以我有一个我正在循环的对象,但是它会在其中输出一大堆我需要的东西,但我设计的页面也不需要很多东西。我怎样才能通过钥匙删除或拉出我需要的东西?或者有没有更简单的方法?

  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;
    }
4

2 回答 2

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 += "&nbsp;" + 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
于 2012-10-11T15:26:37.580 回答
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.

于 2012-10-11T14:30:27.837 回答