数组方法
迭代(遍历)方法:
forEach()、map()、filter()、some()、every()
array:forEach(function(currentValue,index,arr))
currentValue:数组当前项的值
index:数组当前项的索引
arr:数组对象本身
例子:
// forEach迭代(遍历)数组
var arr = [1, 2, 3];
var sum = 0;
arr.forEach(function(value, index, array) {
console.log('每个数组元素' + value);
console.log('每个数组元素的索引号' + index);
console.log('数组本身' + array);
sum += value;
})
console.log(sum);
filter()筛选数组
array:filter(function(currentValue,index,arr))
filter()方法创建一个新数组,主要用于筛选数组, 返回所有满足的元素
注意:直接放回一个新数组
currentValue:数组当前项的值
index:数组当前项的索引
arr:数组对象本身
filter例子:
<script>
// filter筛选数组
var arr = [12, 66, 4, 88];
var newArr = arr.filter(function(value, index) {
// 取偶数
// return value % 2 == 0;
return value >= 20;
})
console.log(newArr);
</script>
some()查找数组中是否有满足条件
array:some(function(currentValue,index,arr))
some()方法用于检测数组中的元素是否满足指定条件
注意:返回的是布尔值,如果查找到这个元素,就放回true,如果查找不到就放回flase
如果找到第一个满足条件元素,则终止循环,不在继续查找
currentValue:数组当前项的值
index:数组当前项的索引
arr:数组对象本身
some例子:
// some查找数组中是否有满足条件的元素
var arr = [10.30, 4];
var flag = arr.some(function(value) {
return value >= 20;
})
console.log(flag);
例子:
data.some(function(value) {
// 返回的是布尔值
if (value.pname == product.value) {
arr.push(value);
// return后面必须写true 代表找到,终止循环
return true;
}
})
对象方法Object.keys()
Object.keys()获取对象自身的所有属性
Object.keys(obj)
效果类似for----in
返回一个由属性名组成的数组
返回的是数组
例子、:
<script>
// 用于获取对象自身所有的属性
var obj = {
id: 1,
pname: '小米',
price: 1999,
num: 2000
};
var arr = Object.keys(obj);
console.log(arr);
arr.forEach(function(value) {
console.log(value);
})
</script>
Object.defineProperty()定义对象中的新属性或修改原有的属性(改为false是不允许的)
Object.defineProperty(obj,prop,descriptor)
obj:必须。目标对象
prop:必须。需定义或修改的属性的名字
descriptor:必须。目标属性所拥有的特性
descriptor说明:以对象的形式{}书写
value:设置属性的值 默认为undefined
wiritable:值是否可以重写 禁止修改。true|false默认为false
enumerable:目标属 性是否可以被枚举禁止遍历。true|false默认为false
configurable:目标属性是否可以被删除或是否可以再次修改特性true|false默认为false
例子:
Object.defineProperty(obj, 'id', {
// 如果值为false 不允许修改这个属性值 默认值也是false
writable: false,
});
Object.defineProperty(obj, 'address', {
value: '中国山东蓝翔技校xx单元',
// 如果只为false 不允许修改这个属性值 默认值也是false
writable: true,
// enumerable 如果值为false 则不允许遍历, 默认的值是 false
enumerable: true,
// configurable 如果为false 则不允许删除这个属性 默认为false
configurable: true
});
console.log(obj.address);