ES6

※前提条件:本文基于 Vue 2.0 创作

find() [edit]

// An highlighted block
this.result = this.imgItems.find(item => item.required && !this.form[item.key])

let obj = this.companyOptions.find(item => item.value === 1)

注意: 如果不符合条件要求。result会是 undefined

findIndex() [edit]

findIndex()用法与find()非常类似,返回第一个符合条件的数组成员位置,如果所有成员都不符合条件,则返回-1。

[1, 2, 5, -1, 9].findIndex((n) => n < 0)
//返回符合条件的值的位置(索引)
// 3
const fruits = [
   {name: 'apples', quantity: 2},
   {name: 'bananas', quantity: 0},
   {name: 'cherries', quantity: 5}
];
const index = fruits.findIndex(fruit => fruit.name === 'cherries');
console.log(index); // 3
console.log(fruits[index]);

filter() [edit]

filter()使用指定的函数测试所有元素,并创建一个包含所有通过测试元素的新数组。

filter() 为数组中的每个元素调用一次 callback 函数,并利用所有使得 callback 返回 true 或 等价于 true 的值元素创建一个新数组。那些没有通过 callback 测试的元素会被跳过,不会被包含在新数组中。filter() 不会改变原数组。

var arr = [10, 20, 30, 40, 50]
var newArr = arr.filter(item => item > 30);
console.log(newArr); //[40, 50]

forEach() [edit]

遍历数组全部元素,利用回调函数对数组进行操作,自动遍历整个数组,且无法break中途跳出循环,不可控,不支持return操作,return只用于控制循环是否跳出当前循环。

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.forEach((a) => {
  if (a % 2 == 0) {
    return;
  }
  console.log("a:", a);
});

用try catch可以跳出foreach遍历

try {
  let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  arr.forEach((a) => {
    if (a % 2 == 0) {
      throw "跳出foreach";
      return;
    }
    console.log("a:", a);
  });
} catch (error) {
  console.log("error:", error);
}

some() [edit]

判断数组中是否至少有一个元素满足条件:

// 判断数组arr1是否全是偶数
// 判断数组arr2是否至少有一个偶数
var arr1=[1, 2, 3, 4, 5];
var arr2=[1, 4, 6, 8, 10];

console.log(
  arr2.some(function(value, index, array){
      return value % 2 == 0;
  })
);    // true

every() [edit]

判断数组中是否每个元素都满足条件:

// 判断数组arr1是否全是偶数
// 判断数组arr2是否至少有一个偶数
var arr1=[1, 2, 3, 4, 5];
var arr2=[1, 4, 6, 8, 10];
console.log(
  arr1.every(function(value, index, array){
      return value % 2 == 0;
  })
);    // false

map() [edit]

键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

var myMap = new Map();
myMap.set(keyString, "和键'a string'关联的值");
for (var i = 0; i < this.tableData.length; i++) {
   let n = this.tableData4[i].Id + '-' + this.tableData4[i].name
   this.myMap.set(n, this.tableData[i].bdwant)
}
myMap.set(keyString, {name:"和键'a string'关联的值"});

list的对象求和

let totalSumAll = 0;
listObject.map((item) => {totalSumAll += item.count})

get(查找) [edit]

this.myMap .get(row.recive)

has(返回是否存在) [edit]

//返回值:布尔值,若存在于Map中,则返回true
myMap.has(arr) //true

delete(删除) [edit]

myMap.delete(key);

clear(清除所有) [edit]

map.clear()

 map的合并、转换 [edit]

// 合并两个 Map 对象时,如果有重复的键值,则后面的会覆盖前面的,对应值即 uno,dos, three
var merged = new Map([...first, ...second]);
//map转数组
 var map = new Map()
    .set('aa',11)
    .set('bb',22)
    .set('cc',33)
    
    [...map] // [ ['aa',11],['bb',22],['cc',33] ]
    [...map.keys()] //  ["aa", "bb", "cc"]
    [...map.values()] // [11, 22, 33]
    [...map.entries()] //  [ ['aa',11],['bb',22],['cc',33] ]

reduce() [edit]

reduce()接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值.

array.reduce(callback, initialValue)

callback:执行数组中每个值的函数(也可以叫做reducer),包含4个参数.

// 获取购物车中商品列表的价格总和
let goodList = [{id: 1, price: 10, qty: 5}, {id: 2, price: 15, qty: 2}, {id: 3, price: 20, qty: 1}]
 
let totalPrice = goodList.reduce((prev, cur) => {
	return prev + cur.price * cur.qty
}, 0)
 
console.log(totalPrice) // 100

var arrString = 'abcdaabc'
// 获取字符中中每个字母出现的次数
let count = arrString.split('').reduce(function(res, cur) {
	res[cur] ? res[cur]++ : res[cur] = 1
	return res
}, {})
 
console.log(count) // {a: 3, b: 2, c: 2, d: 1}

コメント:



(画像の文字列を入力して下さい)

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS