相关疑难解决方法(0)

JavaScript对象的长度

如果我有一个JavaScript对象,请说

const myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;
Run Code Online (Sandbox Code Playgroud)

是否有内置或接受的最佳实践方法来获取此对象的长度?

javascript javascript-objects

2224
推荐指数
30
解决办法
169万
查看次数

为什么express.js在使用res.send()时会返回一个空数组?

我有这个包含键和值对数组的对象.

console.log(myObject);

[ 'askdasuni.com': '11111',
  'capsfrom2011.com': '22222',
  'defusionet.com': '33333' ]
Run Code Online (Sandbox Code Playgroud)

当我在我的应用程序中调用res.send(myObject)时,我得到以下内容:

< HTTP/1.1 200 OK
< X-Powered-By: Express
< Content-Type: application/json; charset=utf-8
< Content-Length: 2
< Date: Wed, 11 Mar 2015 18:15:41 GMT
< Connection: keep-alive
[]
Run Code Online (Sandbox Code Playgroud)

我希望它发送myObject的内容,而不仅仅是"[]".

如果我将代码更改为res.send('string'),我会得到以下内容:

< HTTP/1.1 200 OK
< X-Powered-By: Express
< Content-Type: text/html; charset=utf-8
< Content-Length: 6
< Date: Wed, 11 Mar 2015 18:21:09 GMT
< Connection: keep-alive
< 
string
Run Code Online (Sandbox Code Playgroud)

node.js express

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

Javascript数组返回长度为0,即使有元素也是如此

我有一个像下面这样的javascript数组,里面有几个元素.当我尝试读取数组的长度时,我总是得到0作为长度.任何人都可以告诉我为什么会这样.

我的数组是这样的:

var pubs = new Array();
pubs['b41573bb'] =['Albx Swabian Alb Visitor Guide','','15.12.2007 09:32:52',['0afd894252c04e1d00257b6000667b25']];
pubs['6c21a507'] =['CaSH','','29.05.2013 14:03:35',['30500564d44749ff00257b7a004243e6']];
Run Code Online (Sandbox Code Playgroud)

javascript

5
推荐指数
2
解决办法
9325
查看次数

试图获得数组长度

见下面给出的情景

var x = [];
x['abc'] = "hello";
console.log(x.length); //returns 0

var x = [1,2];
x['abc'] = "hello";
console.log(x.length); //returns 2
Run Code Online (Sandbox Code Playgroud)

这背后的任何原因或我错过了什么?

javascript arrays

3
推荐指数
1
解决办法
114
查看次数

从两个常规数组创建一个关联数组

我想将两个常规数组绑定到一个关联数组中.第一个的值是键,第二个的值是元素.

var array1=new Array("key1","Key2","Key3");
var array2=new Array("Value1","Value2","Value3");

var associative_array=new Array();
for(var i=0;i<3;i++){

associative_array[array1[i]]=array2[i];
}
Run Code Online (Sandbox Code Playgroud)

但是当我试图获得新的关联数组的长度时,我注意到它是空的:

alert(associative_array.length);//always 0
Run Code Online (Sandbox Code Playgroud)

我做错了什么?Thanx提前.

javascript associative-array

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

为什么数组允许字符串作为 JavaScript 中的索引?

正如我们已经知道的,数组和对象之间的区别之一是:

“如果你想提供特定的键,唯一的选择是一个对象。如果你不关心键,那就是一个数组”(在这里阅读更多)

此外,根据MDN 的文档

数组不能使用字符串作为元素索引(如在关联数组中),但必须使用整数

然而,令我惊讶的是:

> var array = ["hello"]; // Key is numeric index
> array["hi"] = "weird"; // Key is string
content structure looks like:  ["hello", hi: "weird"]
Run Code Online (Sandbox Code Playgroud)

数组的内容结构看起来很奇怪。更重要的是,当我检查它返回的数组类型时true

Array.isArray(array) // true
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 为什么会有这种行为?这似乎不一致,对吧?
  2. 在幕后实际存储的数据结构是什么:作为数组或诸如对象、哈希表、链表之类的东西?
  3. 这种行为是否取决于特定的 JavaScript 引擎(V8spidermonkey等)?
  4. 我应该在普通对象上使用这样的数组(键都是数字索引和字符串)吗?

javascript arrays specifications object

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