{
"fulltime": [
{"name": "oscar godson", "age": "20", "email": "oscargodson@hismail.com"},
{"name": "daniel erickson", "age": "25", "email": "daniel@wraithtech.com"},
{"name": "john doe", "age": "18", "email": "john.doe@mycompany.com"}
],
"parttime":[
{"name": "bill johnson", "age": "35", "email": "billjohnson@gmail.com"}
]
}
并且不知道任何这些值,例如全职等于任何事情。我正在寻找一个函数/方法来遍历它...请不要jQuery。
另外,我想基本上得到输出:fulltime - >所有内部全职,兼职 - >所有兼职等等
答案 0 :(得分:0)
for (key in your_object) {
console.log(key + " people:");
// "key" is "fulltime", "parttime", etc
for (var i = 0; i < your_object[key].length; i++) {
console.log(your_object[key][i]);
}
}
答案 1 :(得分:0)
假设你安装了Firebug:
for(var key in json) {
//"fulltime", "parttime"
console.log("Checking " + key);
for(var i = 0; i < json[key].length; i++){
var person = json[key][i];
//Each person
for(var prop in person) {
console.log(prop + ": " + person[prop]);
}
}
}
编辑:请注意不要在数组上使用for ... in ...
进行迭代。要迭代数组,请使用for(var i = 0; i < array.length; i++){...}
答案 2 :(得分:0)
您可以使用递归函数执行此操作。但是你需要注意循环引用。见下面的例子:
var arr = [];
/**
* Gets the string representation of the specified object. This method is
* used for debugging
* @param {Object} Object to convert to string
* @return {String} The string representation of the object
*/
var toObjectSource = function(obj) {
if(obj === null) {
return "[null]";
}
if(obj === undefined) {
return "[undefined]";
}
var str = "[";
var member = null;
for(var each in obj) {
try {
member = obj[each];
if(arr.indexOf(member) === -1) { // the indexOf function is not available
// on older versions of js
arr.push(member);
str += each + "=" + toObjectSource(member) + ", "; // but beware of this
// recursive call!!!
}
}catch(err) {
alert(err);
}
}
return str + "]";
}
检查的原因是。如果对象是这样的话,它会给你“太多的递归”:
var obj = {
"a": "a",
"b": "b"
}
obj.c = obj;
答案 3 :(得分:0)
首先,您可以在http://www.jsonlint.com/中验证您的JSON数据。
如果尚未将带有JSON的字符串转换为对象,则应使用Web浏览器中的JSON.parse
函数或http://www.json.org/js.html将输入字符串转换为对象。
要循环访问对象的属性,可以使用"for in"
循环。通常始终建议以下列形式使用此循环:
for (var name in myObject) {
if (myObject.hasOwnProperty(name)) {
// ....
}
}
(例如,参见http://www.jslint.com/lint.html#forin解释)。您不应忘记在name
语句内或之前的某个地方声明var name
为for
。如果你忘了这个,变量将被解释为全局,你的代码将运行缓慢。
使用标准for
循环而不是"for in"
循环更有效地循环遍历数组的元素。此外,为了获得更多的性能优势,您应该始终在局部变量中缓存一次使用的属性的索引。例如循环
for (var i = 0; i < your_object[key].length; i++) {
console.log(your_object[key][i]);
}
应该更好地重写如下:
var arr = your_object[key];
var len = arr.length;
for (var i = 0; i < len; i++) {
console.log(arr[i]);
}