相关疑难解决方法(0)

访问/处理(嵌套)对象,数组或JSON

我有一个包含对象和数组的嵌套数据结构.如何提取信息,即访问特定或多个值(或键)?

例如:

var data = {
    code: 42,
    items: [{
        id: 1,
        name: 'foo'
    }, {
        id: 2,
        name: 'bar'
    }]
};
Run Code Online (Sandbox Code Playgroud)

我怎么能访问name第二项items

javascript arrays nested object data-manipulation

811
推荐指数
24
解决办法
57万
查看次数

在JavaScript中循环使用一组元素的最佳方法是什么?

在过去和大多数我目前的项目中,我倾向于使用这样的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中的元素或任何数组的最佳实践?

javascript arrays loops elements

53
推荐指数
7
解决办法
10万
查看次数

JSON解析错误 - 位置1的JSON中出现意外的令牌o

我需要获取一个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

经过进一步的研究:

在位置1的JSON中出现意外的令牌o

SyntaxError:位置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?

javascript jquery json

2
推荐指数
1
解决办法
6211
查看次数

计算具有'仅非数字索引'的数组的长度,而不是in循环

如果索引是非数字,则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)

javascript

0
推荐指数
1
解决办法
3134
查看次数