javascript笔记--数组

获取数组元素索引:

indexOf返回第一个找到的索引:可带起始索引

lastIndexOf返回最后一个找到的索引:可带起始索引

var animals = new Array("dog", "cat", "seal" , "elephant", "walrus", "lion","cat")

console.log(animals.indexOf("cat")); //prints 1
console.log(animals.lastIndexOf("cat"));//prints 6

console.log(animals.indexOf("cat", 2)); //prints 6
console.log(animals.lastIndexOf("cat", 4)); //prints 1

 

合并多维数组为一维数组:concat with apply method

var fruitarray = [];
fruitarray[0] = ['strawberry', 'orange'];
fruitarray[1] = ['lime','peach','banana'];
fruitarray[2] = ['tangerine', 'apricot'];
fruitarray[3] = ['raspberry', 'kiwi'];

var newarray = fruitarray.concat.apply([], fruitarray);
console.log(newarray[5]);

 

删除或替换数组元素:indexOf splice

splice() method takes three parameters; the first parameter is required,as

It's index where the splicing is to take place; the second,optional parameter is 

the number of elements to remove; the third parameter ,also optional, is a set of

the replacement elements.

animals.splice(animals.indexOf("walrus"),1);
animals.splice(animals.lastIndexOf("cat"),1, "monkey");
console.log(animals.toString());

 

浅拷贝:slice()如果array元素是对象,浅拷贝指向相同的对象,在新数组中修改丢下会影响原来数组中的对象。;如果是原始数据类型:number/string.浅拷贝拷贝的是值,不是引用;修改新数组不会影响原来数组。

var animals = ['elephant', 'tiger', 'lion', 'zebra', 'cat', 'dog', 'rabbit', 'goose'];

var domestic = animals.slice(4, 7);
console.log(domestic);

var mArray = [];
mArray[0] = ['apple', 'pear'];
mArray[1] = ['strawberry', 'lemon'];
mArray[2] = ['lime', 'peach', 'berry'];

var nArray = mArray.slice(1,2);
console.log(mArray[1]);

nArray[0][0] = 'raspbeery';
console.log(nArray[0]);
console.log(mArray[1]);

通过一个回调函数遍历数组的每个元素,然后返回一个新数组: map()

var decArray = [23, 255, 122 ,5, 16, 99];

var hexArray = decArray.map(function(element) {
return element.toString(16);
});

console.log(hexArray);

对从qureySelector返回的NodeList使用forEach和call方法

var cells = document.querySelectorAll("td + td");

[].foreach.call(cells, function(cell){

  sum+=parseFloat(cell.firstChild.data);

});

 

过滤数组元素,然后将结果赋给新数组:filter


var charSet = ["**", "bb", "cd", "**", "cc", "**", "dd", "**"];

var newArray = charSet.filter(function(element){
return (element != "**");
});

console.log(newArray);

验证数组元素符号某些标准:every(), some()

function testValue (element, index, array) {
var textExp = /^[a-zA-Z]+$/;
return textExp.test(element);
}

var elemSet = ["**", 123, "aaa", "abc", "-", 46, "AAA"];

var result = elemSet.every(testValue);
console.log(result);

var elemSet2 = ["elephant", "lion", "cat", "dog"];
result = elemSet2.every(testValue);
console.log(result);

 

关联数组:遍历数组使用keys() foreach();尽量不使用数组对象创建关联数组

当使用数组创建关联数组,实际添加新的属性到数组; 而不是添加新的数组元素;

使用数组创建关联数组,不能使用数字所有访问,返回长度为0;

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Associative Array</title>
</head>
<body>
<form id="picker">
<label>Value 1:</label><input type="text" id="first"><br>
<label>Value 2:</label><input type="text" id="second"><br>
<label>Value 3:</label><input type="text" id="third"><br>
<label>Value 4:</label><input type="text" id="four"><br>
<button id="validate">Validate</button>
</form>
<div id="result"></div>

<script type="text/javascript">
//get the form element names and vales and validate
document.getElementById("validate").addEventListener('click', function (event) {
event.preventDefault();

//create array of element key/values
var elems = document.getElementById("picker").elements;
var elemArray = new Object();
for (var i=0; i<elems.length; i++) {
if (elems[i].type == "text") elemArray[elems[i].id] = elems[i].value;
}

var str = '';
Object.keys(elemArray).forEach(function (key) {
var value = elemArray[key];
str += key + '->' + value + '<br />';
});

document.getElementById("result").innerHTML = str;
}, false);
</script>
</body>
</html>

var elemArray = new Object();//object对象创建关联数组。
var elem = document.forms[0].elements[0];
elemArray[elem.di] = elem.value;

Object.keys(elemArray).forEach(function (key) {

var value = elemArray[key];
console.log(value);
});

 

转载于:https://www.cnblogs.com/sky-zhao/p/5054208.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值