日期:2014-05-16 浏览次数:20372 次
四.数组与正则表达式
?
var empty = []; var numbers = ['one','two','three','four','five','six','seven','eight','nine','ten']; document.writeln(empty[1]); // undefined document.writeln(numbers[1]); // 'two' document.writeln(empty.length); // 0 document.writeln(numbers.length); // 10?
// 现在看看数组对象与一般对象的区别
var numbers_obj = {
"0" : "one",
"1" : "two",
"2" : "three",
"3" : "four",
"4" : "five",
"5" : "six",
"6" : "seven",
"7" : "eight",
"8" : "nine",
"9" : "ten"
};
?var misc = ['string', 98.6, true, false, null, undefined,
['nested','array'], {object:true} ,NaN ,Infinity];
document.writeln(misc.length); // 10
?numbers.length = 3; // numbers['one','two','three']
// 通过把下标指定为一个数组当前的length. 可以附加一个新的元素到该数组的尾部.
numbers[numbers.length] = 'shi'; // numbers['one','two','three','shi']
// 相同的功能可以使用push 方法来完成:
numbers.push('wu'); // numbers['one','two','three','shi', 'wu']
?delete numbers[2]; // numbers['one','two', undefined ,'shi', 'wu']?? 不幸的是,那样会在数组中留下一个空洞。这时可以使用splice 方法来将后续元素向前步进:
numbers.splice(2,1); // numbers['one','two','shi', 'wu']??? 注意区分 splice(衔接)与slice(分割). slice() 方法并不会修改数组,而是返回一个子数组. splice() 方法会直接对数组进行修改.
var myArray = []; document.writeln(myArray.length); // 0 myArray[100000] = true; document.writeln(myArray.length); // 100001?
// Javascript 在区别数组和对象上没有一个好的机制。此时可以通过定义一个 is_array 函数来解决:
var is_array = function(value){
return value && typeof value === 'object' && value.constructor === Array;
};
document.writeln(is_array([]));
document.writeln(is_array({}));
?? 上述判断在识别从不同的窗口(window)或帧(frame)里构造的数组时会失败。如果想要准确地检测那些外部的数组,我们不得不做更多的工作:var is_array_enhanced = function(value){
return value &&
typeof value === 'object' &&
typeof value.length === 'number' &&
typeof value.splice === 'function' &&
// 判断属性是否为可枚举的(for in 循环可用),对于所有数组,将得到false.