最新消息:欢迎光临!

jS数组和对象

js/jquery findever 1829浏览 0评论

比如有一个数组a=[1,2,3,4],还有一个对象a={0:1,1:2,2:3,3:4},然后你运行alert(a[1]),两种情况下的运行结果是相同的!这就是说,数据集合既可以用数组表示,也可以用对象表示,那么我到底该用哪一种呢?

数组表示有序数据的集合,而对象表示无序数据的集合。如果数据的顺序很重要,就用数组,否则就用对象。

当然,数组和对象的另一个区别是,数组中的数据没有“名称”(name),对象中的数据有“名称”(name)。但是问题是,很多编程语言中,都有一种叫做“关联数组”(associative array)的东西。这种数组中的数据是有名称的。

比如在javascript中,可以这样定义一个对象:

var a={“城市”:”北京”,”面积”:16800,”人口”:1600};

但是,也可以定义成一个关联数组:
Java代码
a[“城市”]=”北京”;

a[“面积”]=16800;

a[“人口”]=1600;

在Javascript语言中,关联数组就是对象,对象就是关联数组。(编者注:你可以这么理解关联数组,关联数组表现为一个数组,但是隐藏包含着一个对象),这一点与php语言完全不同,在php中,关联数组也是数组。

比如运行下面这段javascript:

Java代码
var a=[1,2,3,4];

a['foo']='Hello World';

alert(a.length);

最后的结果是4,也就是说,数组a的元素个数是4个。

但是,运行同样内容的php代码就不一样了:

Java代码
$a=array(1,2,3,4);

$a[“foo”]=”Hello world”;

echo count($a);

最后的结果是5,也就是说,数组a的元素个数是5个。

遍历方法:
一:
Java代码
var news = { id:'101', title:'这是标题', content:'这里是内容'}
for(var n in news){
document.write(n+'—'+news[n]+'
')
}

二:
Java代码
var news = {
0:{id:'101', title:'这是标题111', content:'这里是内容111'},
1:{id:'101', title:'这是标题222', content:'这里是内容222'},
2:{id:'101', title:'这是标题333', content:'这里是内容333'}
}
for(var n in news){
document.write(n+'—'+news[n].title+'
')
}
/////调用值的方法 news.id 或 news['id']

字符转成对象
Java代码
s = '{“address”:””,”email”:”123@123.com”,”name”:”test5″,”id”:”6″};';
eval('o='+s);
alert(o.name);
或:
data=eval('(' +s+ ')');

————————————————————-

 对象是一种复合数据类型.
  创建对象最简单的方法是你的javascript代码中包含对象直接量,也可以通过运算符new创建。
Java代码
var empty = {}; // An object with no properties
var point = { x:0, y:0 };
var circle = { x:point.x, y:point.y+1, radius:2 };
var homer = {
“name”: “Homer Simpson”,
“age”: 34,
“married”: true,
“occupation”: “plant operator”,
'email': homer@example.com
};
var a = new Array(); // Create an empty array
var d = new Date(); // Create an object representing the current date and time
var r = new RegExp(“javascript”, “i”); // Create a pattern-matching object

  创建对象后,我们可以通过”.”运算符,在对象中创建新属性、引用已有属性、设置属性值等。
  
Java代码
var book = new Object();   //创建对象
  book.title=”JavaScript: The Definitive Guide”;
  book.chapter1=new Object(); //作为对象属性的,嵌套对象
  book.chapter1.title = “Introduction to JavaScript”;
  book.chapter1.pages = 11;
  book.chapter2 = { title: “Lexical Structure”, pages: 6 };
alert(“Outline: ” + book.title + “\n\t” +
    ”Chapter 1 ” + book.chapter1.title + “\n\t” +
    ”Chapter 2 ” + book.chapter2.title);
从对象中读取一些属性.

在上例中,需注意,可以通过把一个值赋给对象的一个新属性来创建它.
  在JavaScript语句中提到过用for/in语句可以遍历对象的属性和方法。
  用in运算符检查属性是否存在.如:
if (“x” in o) o.x = 1;//如果存在就设置其属性值为1.
如果这样写:o.x=undefined //属性x是存在的,但是没有值.我常常会这样写:if (o.x !== undefined) o.x = 1;
另外,!= =常代替!=.!= =和= = = 区别在于undefined和null,不用区分时可以省略,如:if (o.doSomething) o.doSomething();
  删除属性:delete book.chapter2;
  作为关联数组的对象:object.property 和object[“property”]是等价的.
  通用对象的属性和方法
   constructor属性:var d = new Date();d.constructor == Date; // true
   由于构造函数定义了一个对象的类,所以属性constructor在有助于确定给定对象的类型.如,可以使用如下代码来确定一个未知对象的类型:if ((typeof o == “object”) && (o.constructor == Date)),也可以用instanceof运算符:if ((typeof o == “object”) && (o instanceof Date))
  toString()方法:返回一个字符串,该字符串代表了调用它的对象的类型或值.当javascript需要将一个对象转换成字符串时就调用这个对象的toString()方法.例如当用”+”连接一个字符和一个对象时,或者把一个对象传递给alert()或document.write()方法时,就会调用toString().
  默认的toString()方法提供的信息并不多.例如下面的代码

转载请注明:Findever » jS数组和对象

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址