从对象中挑选和选择项目

时间:2012-10-11 14:27:47

标签: javascript

所以我有一个对象,我正在循环但是,它输出了我需要的一大堆东西,但很多它我也不需要我正在设计的页面。如何通过密钥删除或拉出我需要的东西?或者有更简单的方法吗?

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

2 个答案:

答案 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 += "&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

答案 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进行检查。