在这个数组解析器中使用了哪些javascript技术?

时间:2012-02-08 16:23:29

标签: javascript jquery arrays

我有以下脚本转储给定数组的内容

   function dump(obj) {
            obj = obj || {};
            var result = [];
            $.each(obj, function (key, value) { result.push('"' + key + '":"' + value + '"'); });
            return '{' + result.join(',') + '}';
        }

...但我不明白这个“数组”的功能。你能告诉我我需要学习什么来理解.each声明中的内容吗?

更新

下面的

e.values是obj的样子。

enter image description here

3 个答案:

答案 0 :(得分:2)

这是使用jQuery为each http://api.jquery.com/jQuery.each/进行迭代。以下是dump function

中发生的情况
function dump(obj) {
    // If 'obj' is falsy then make 'obj' a new Object
    obj = obj || {};

    // Create a new Array
    var result = [];

    // Loop over each property in 'obj' and add
    // "key":"val" String to the 'result' Array,
    $.each(obj, function (key, value) { result.push('"' + key + '":"' + value + '"'); });

    // Join the Array using "," as the delimiter and wrap
    // this with { ... }. Example of arr.join():
    //     var arr = [1, 2, 3];
    //     console.log(arr.join(".")); // "1.2.3"
    //     console.log(arr.join("|")); // "1|2|3"
    return '{' + result.join(',') + '}';
}

修改 如果您需要获取任意Object的密钥,您可以使用:

function getKeys(obj) {
    var keys = [],
        i;
    for (var i in obj) {
        if (obj.hasOwnProperty(i)) {
            keys.push(i);
        }
    }
    return keys;
}

var keys = getKeys({key: "value"}); // ["key"]

这是working example

您还可以查看Underscore.js的_.keys()

答案 1 :(得分:1)

基本上所有代码都在创建对象的字符串版本。

演示:http://jsfiddle.net/GYJAT/


$.each是一个遍历数组的jQuery函数。

答案 2 :(得分:0)

根据您留下的评论,您的主要问题似乎是如何获取对象的密钥。

首先,在您的代码示例中,jQuery会自动为您执行此操作:

$。each(obj,function(key,value)...

如果您需要自己动手,现代浏览器具有keys属性:Object.keys(obj)

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys

对于旧版浏览器,您需要使用for循环(请注意HasOwnProperty测试):

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/HasOwnProperty#Example:_Iterating_over_the_properties_of_an_object