JavaScript编程精解(第三版)第五章习题解答

第一题:展平

直接利用reduce的聚合操作即可。

let arr = [[0, 1, 3, 4], [2, 3, 4 ,5], [4, 5, 6, 7, 8 ]]
let flatten = arr.reduce((prev, cur) => { return prev.concat(cur)}, []);

第二题:你自己的循环

let loop = (val, test, update, operation) => {
  while(test(val)) {
  	operation(val);
    val = update(val);
  }
};

第三题:全都

实现every函数,分为循环版本和some方法版本。

循环版本:

function every(array, predicate) {
  for(let e of array) {
  	if(!predicate(e)) return false;
  }
  return true;
};

some方法版本:

function every2(array, predicate) {
  return !array.some(e => !predicate(e));
};

第四题:主要书写方式

直接CV书上的函数即可:

function dominantDirection(text) {
  let counted = countBy(text, char => {
    let script = characterScript(char.codePointAt(0));
    return script ? script.direction : "none";
  }).filter(({name}) => name != "none");

  if (counted.length == 0) return "ltr";

  return counted.reduce((a, b) => a.count > b.count ? a : b).name;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值