相关疑难解决方法(0)

元素在"for(... in ...)"循环中排序

Javascript中的"for ... in"循环是否按照声明的顺序循环遍历hashtables/elements?是否有一个浏览器没有按顺序执行?
我想要使​​用的对象将被声明一次,永远不会被修改.

假设我有:

var myObject = { A: "Hello", B: "World" };
Run Code Online (Sandbox Code Playgroud)

我进一步使用它们:

for (var item in myObject) alert(item + " : " + myObject[item]);
Run Code Online (Sandbox Code Playgroud)

在大多数体面的浏览器中,我可以期待'A:'你好''总是先来'B:'世界"吗?

javascript for-loop

196
推荐指数
5
解决办法
9万
查看次数

在JSON对象的顶部添加内容

我有一个JSON对象,它在页面加载时启动,如下所示:

data[foo] = bar;
data[foo2] = bar2;
data[foo3] = bar3;
Run Code Online (Sandbox Code Playgroud)

有没有办法在第一个元素之前注入foo元素,这样在执行a时for var i in data,新元素将在启动对象时添加的元素之前循环?

原因是,我正在向用户显示一些项目.当用户通过javascript添加新项目时,我希望这个新项目显示在所有现有项目之上,但是当我添加新项目时,即

data[newItem] = newItem;
Run Code Online (Sandbox Code Playgroud)

然后JSON对象如下所示:

data[foo] = bar;
data[foo2] = bar2;
data[foo3] = bar3;
data[newItem] = newItem;
Run Code Online (Sandbox Code Playgroud)

而不是我想要的,这是:

data[newItem] = newItem;
data[foo] = bar;
data[foo2] = bar2;
data[foo3] = bar3;
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

javascript jquery json

8
推荐指数
3
解决办法
2万
查看次数

如何更改JSON中字段的顺序

场景:考虑我有一个JSON文档如下:

   {
     "name": "David",
     "age" : 78,
     "NoOfVisits" : 4
   }
Run Code Online (Sandbox Code Playgroud)

问题:我想改变文档中字段的顺序/顺序,比如我想要age,NoOfVisits然后最后name.

截至目前,我将值存储在临时变量中,删除字段并重新创建相同的字段.由于重新分配不起作用:(

我是按照以下方式做到的:

    temp = doc["age"];
    delete doc['age'];
    doc["age"] = temp;

    temp = doc["NoOfVisits "];
    delete doc['NoOfVisits '];
    doc["NoOfVisits"] = temp;

    temp = doc["name"];
    delete doc['name'];
    doc["name"] = temp;
Run Code Online (Sandbox Code Playgroud)

这样我就可以获得所需的有序JSON文档.这个要求是特殊的,但我仍然需要一些有效的解决方案

问题:有人可以用有效的方法帮助实现同样的目标吗?

json node.js

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

为什么使用array.push()来创建一个对象?

我正在阅读如何在JavaScript中获取查询字符串值?在Stackoverflow和第一个回复的这段代码让我想知道为什么'vars.push()'像这样使用?

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}
Run Code Online (Sandbox Code Playgroud)

但不是这样的:

var vars=[];
...
vars.push(hash[0]);
vars[hash[0]] = hash[1];
Run Code Online (Sandbox Code Playgroud)

我重写了代码,如:

var vars={};
...
vars[hash[0]] = hash[1];
Run Code Online (Sandbox Code Playgroud)

它的工作原理.现在的问题是:

  • 为什么会有人使用数组进行回复?
  • 为什么有人会使用ARR.push(KEY)然后使用ARR[KEY]=VAL格式?

javascript

7
推荐指数
1
解决办法
216
查看次数

在firefox和chrome中更改.each()的顺序

我有一个Web服务,它返回一个JSON编码的数据数组.然后我使用jQuery的.each()函数来遍历该数组,但是在Firefox中它会向下迭代,而在Chrome中它会迭代.

从Web服务返回的数据是:

{
  "data": {
    "610": {
      "id": "610",
      "url": "a url 1",
      "description": "XXX YYY",
      "toc": "0000-01-00",
      "active": "1"
    },
    "608": {
      "id": "608",
      "url": "a url 1",
      "description": "ytttgffrr",
      "toc": "0000-01-00",
      "active": "1"
    },
    "607": {
      "id": "607",
      "url": "a url  3",
      "description": "rtretert3",
      "toc": "0000-01-00",
      "active": "1"
    },
    "606": {
      "id": "606",
      "url": "a url 4",
      "description": "xxxwwww",
      "toc": "0000-01-00",
      "active": "1"
    },
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

Firefox进入610 - > 606,而Chrome则为606 - > 610.

任何想法为什么以及我能做些什么呢?

each jquery

5
推荐指数
1
解决办法
4649
查看次数

标签 统计

javascript ×3

jquery ×2

json ×2

each ×1

for-loop ×1

node.js ×1