许一世地老天荒

文章 评论 浏览 28

许一世地老天荒 2022-05-04 13:58:37

请问如果输出的结果是有个按钮把拼音放在汉字上面 像这个页面的功能一样 该怎么搞?
https://duchinese.net/lessons/307-nice-to-meet-you?from=course

JavaScript 之 300 行代码搞定汉字转拼音

许一世地老天荒 2022-05-04 13:57:46
var arr =  [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
var a = [];
      function flat(arr){
        while(arr.length){
          var item = arr.pop();
          if(typeof(item) == 'number'){
            a.indexOf(item) < 0 && a.push(item)
          }else{
            flat(item);
          }
        }
        return a.sort((a,b) => a-b)
      };
console.log(flat(arr))

第 11 题:将数组扁平化并去除其中重复数据,最终得到一个升序且不重复的数组

许一世地老天荒 2022-05-04 13:55:28

一个说toString 后面就跟着说toString

 let b = new String('1') // String{'1'} 
String.prototype.toString = function () {
   console.log('toString')
 }
 String.prototype.valueOf = function () {
   console.log('valueOf')
 }
 console.log(a == b) 
打印结果 
valueOf
false //由于valueOf被改写 所以是false 如果将自定义的valueOf去掉 就会为true

所以看出 a == b =>a == b.valueOf()

a == b首先调用的的确是valueOf, 但是对象的valueOf返回的是对象本身, 所以会调用toString转换为基本类型。但是你重写了valueOf,导致valueOf返回的是undefined,a == undefined当然是false。

注意,valueOf返回的是对象的原始值,如果没有原始值就返回对象本身,new String('11')原始值是'11'(可以在控制台输出一下),调用valueOf会直接把'11'返回回来,这个时候得到了原始值,不会调用toString方法
关于valueOf请看这里

第 106 题:分别写出如下代码的返回值

许一世地老天荒 2022-05-01 11:26:10

@Syzq 没有哎~

JavaScript 专题之偏函数

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文