许一世地老天荒 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))
许一世地老天荒 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请看这里
- 共 1 页
- 1
请问如果输出的结果是有个按钮把拼音放在汉字上面 像这个页面的功能一样 该怎么搞?
https://duchinese.net/lessons/307-nice-to-meet-you?from=course
JavaScript 之 300 行代码搞定汉字转拼音