我有一个包含对象和数组的嵌套数据结构.如何提取信息,即访问特定或多个值(或键)?
例如:
var data = {
code: 42,
items: [{
id: 1,
name: 'foo'
}, {
id: 2,
name: 'bar'
}]
};
Run Code Online (Sandbox Code Playgroud)
我怎么能访问name
第二项items
?
在过去和大多数我目前的项目中,我倾向于使用这样的for循环:
var elements = document.getElementsByTagName('div');
for (var i=0; i<elements.length; i++) {
doSomething(elements[i]);
}
Run Code Online (Sandbox Code Playgroud)
我听说使用"反向"循环更快但我没有真正的方法来证实这一点:
var elements = document.getElementsByTagName('div'),
length = elements.length;
while(length--) {
doSomething(elements[length]);
}
Run Code Online (Sandbox Code Playgroud)
什么被认为是循环JavaScript中的元素或任何数组的最佳实践?
我需要获取一个JSON对象并记录标题控制台以获取自动完成功能.我的json的样子如下:
[
{
"title": "Example 1",
"url": "http:\/\/www.example1.com\/"
},
{
"title": "Example 2",
"url": "http:\/\/www.example2.com\/"
},
{
"title": "Example 3",
"url": "http:\/\/www.example3.com\/"
}, ...
Run Code Online (Sandbox Code Playgroud)
我想在我的控制台中记录所有标题,如下所示:
Example 1
Example 2
Example 3
Run Code Online (Sandbox Code Playgroud)
我最初尝试做我想要的是这样的:
$.ajax({
type: "GET",
dataType: 'json',
url: "/url/to/json/",
success: function(data) {
var searchResults = JSON.parse(data);
console.log(searchResults.title);
},
});
Run Code Online (Sandbox Code Playgroud)
这返回:
在位置1的JSON中出现意外的令牌o
经过进一步的研究:
使用$ .parseJSON()和JSON.parse()导致"Uncaught SyntaxError:Unexpected token o"的原因是什么
建议已经解析数据.所以我尝试直接调用对象,因为这些答案建议:
$.ajax({
type: "GET",
dataType: 'json',
url: "/url/to/json/",
success: function(data) {
console.log(data.title);
},
});
Run Code Online (Sandbox Code Playgroud)
这给了我:
未定义
如何在控制台中打印特定的JSON数据,在本例中为标题?如果已经解析了数据,那么当我尝试访问它时,它会返回undefined?
如果索引是非数字,则Array定义length = 0.
我遇到了这种获取长度的实现,但我仍然担心在数组循环中使用.循环的大多数地方被指示为"不良做法". 看这里
可以这样实现吗?
有人可以提供替代解决方案(不进行循环)吗?
for循环的任何例子?
我用过hasOwnProperty(..)
方法来避免属性Array.prototype
.
Array.prototype.global = 1;
var arr = [];
arr['first'] = 1;
arr['second'] = 2;
console.log(arr.length); //0
var length = 0;
for(index in arr){
if(arr.hasOwnProperty(index)) {length++;}
}
console.log(length); //3
Run Code Online (Sandbox Code Playgroud)