我有以下脚本转储给定数组的内容
function dump(obj) {
obj = obj || {};
var result = [];
$.each(obj, function (key, value) { result.push('"' + key + '":"' + value + '"'); });
return '{' + result.join(',') + '}';
}
...但我不明白这个“数组”的功能。你能告诉我我需要学习什么来理解.each声明中的内容吗?
更新
下面的 e.values
是obj的样子。
答案 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"]
您还可以查看Underscore.js的_.keys()。
答案 1 :(得分:1)
答案 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测试):