首页 > 其他分享 >前端面经面经每日一题day04

前端面经面经每日一题day04

时间:2024-12-07 15:32:11浏览次数:8  
标签:slice obj 面经 day04 JSON let 数组 一题 Array

​​​​​​​互联网大厂面试每日一题 – 大厂面试每日一题

上面这个网址是我的题目的来源

不知不觉都已经第四天了,现在因为有了这个任务,我能够自己每天坚持去学习,然后输出。希望我分享的能够让看到的人收获,如果有什么问题可以发在评论区。

关于 JSON,以下代码输出什么

JSON.stringify 就是把JavaScript对象转换成JSON字符串,这个过程就是序列化。

它会忽视undefined和function(){}

对于函数get a(){|,本质是,就是变量a的get方法,如果没有return就是返回值是undefined,所以会忽视,如果有返回值,就是会赋值给变量a

补充:undefined就是初始化后未赋值,比如let a就是undefined,null就是给他赋值了null

let obj={
    a:3,
    b:[1,2,3],
    c:{m:3},
    d:null,
    e:undefined,
    f:function(){},
    get e(){return 44},
    get g(){}
}
console.log(JSON.stringify(obj))
输出:{"a":3,"b":[1,2,3],"c":{"m":3},"d":null,"e":44}

JSON.parse 就是把JSON字符串转化为JavaScript对象。如果不是JSON字符串就会抛出异常。

如何把类数组转化为数组

类数组

特点:类数组有length属性,但是不具备数组原型链上的方法(比如push,pop)。

常见的类数组对象:arguments对象:传递给函数的所有参数。DOM方法返回的结果,document.querySelectorAll

转化为数组的方法

Array.from

这是一个ES6引入的静态对象,用于从类数组或可迭代对象中创建一个新数组实例。

let obj={0:'1',1:'2',length:2}
let arobj=Array.from(obj)
console.log(arobj)

扩展运算符 …

ES6 ,不适用于所有的类数组,但只能作用于可迭代对象iterable 比如DOM方法的结果,但是对于{length:3}就不可以,会出错。

let all=document.querySelectorAll('li')
let allarr=[...all]
console.log(allarr)

Array API

ES5中可以借用Array API通过,call/apply改变this来完成转化。

Array.prototype.slice.call(arrayLike) 这个调用数组原型身上的方法,slice是数组一个方法,提取数组的部分元素,这里我们就提取数组的全部元素,call里面第一个就是需要转化的类数组,第二个就是slice方法切割的开头,第三个元素就是slice方法切割的结束。

let obj={0:'1',1:'2',length:2}
let arobj=Array.prototype.slice.call(obj)
//或者let arobj=Array.prototype.slice.apply(obj)
console.log(arobj)

以上方法都可以,但是我们现在看一下稀疏数组,就是数组中元素为空,控制台显示如下:(2) [空属性 × 2]

那么就是说,上述的方法不一定适用于类数组,最后总结一下,比较稳妥的类数组转化为数组的方法如下

Array.from(arrayLike)

标签:slice,obj,面经,day04,JSON,let,数组,一题,Array
From: https://blog.csdn.net/m0_73918807/article/details/144294814

相关文章

  • 【每日一题】20241207
    【每日一题】若\(0<\alpha<\frac{\pi}{2}\),\(-\frac{\pi}{2}<\beta<0\),\(\cos(\frac{\pi}{4}+\alpha)=\frac{1}{3}\),\(\cos(\frac{\pi}{4}-\frac{\beta}{2})=\frac{\sqrt{3}}{3}\),则\(\cos(\alpha+\frac{\beta}{2})=\)A.\(\......
  • 【Leetcode 每日一题】688. 骑士在棋盘上的概率
    问题背景在一个n×nn\timesnn×n的国际象棋棋盘上,一个骑士从单元格......
  • (每日一题)Fibonacci数列——<滑动窗⼝>
    1.题⽬链接:WY22Fibonacci数列 2.题⽬描述:3.解法:算法思路:求斐波那契数列的过程中,判断⼀下:何时n会在两个fib数之间。  C++算法代码: #include<iostream>#include<cmath>usingnamespacestd;intmain(){intkey;cin>>key;inta=0,b=1......
  • 【每日一题】20241206
    【每日一题】已知\(M(x_0,y_0)\)是双曲线\(C:\frac{x^2}{2}-y^2=1\)上的一点,\(F_1\),\(F_2\)是\(C\)的两个焦点.若$\overrightarrow{MF_1}\cdot\overrightarrow{MF_2}<0$,则\(y_0\)的取值范围是A.\((-\frac{\sqrt3}{3},\frac{\sqrt3}{3})\)B.\((-\frac{\s......
  • Day04学习:Java基础语法
    JAVA基础语法注释//单行注释/*多行注释多行注释多行注释*/标识符Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。所有标识符应该以字母,$,下划线(_)开头首字符之后可以是字母,$,下划线(_)或者数字的任何字符组合不以关键字作变量名或方法名区分大小......
  • 【每日一题】20241205
    【每日一题】已知非零向量\(\bm{a}\),\(\bm{b}\)满足\(|\bm{a}|=2|\bm{b}|\),且\((\bm{a}-\bm{b})\perp\bm{b}\),则\(\bm{a}\)与\(\bm{b}\)夹角的余弦值为_________.[题目来源:]设\(\alpha\)为锐角,若\(\cos\left(\alpha+\frac\pi6\right)=\frac45,则\sin......
  • 【每日一题】20241204
    【每日一题】若集合\(A=\{x\mid\log_{\frac12}x\geq\frac12\}\),\(B=\{x\mid\frac{(1-x)^3}{(x+1)^2}>0\}\),则\(\complement_BA=\)___________.在平面直角坐标系\(xOy\)中,圆\(C\)的方程为\(x^2+y^2-8x+15=0\),若直线\(y=kx-2\)上至少存在一点,使得以该点......
  • AJAX笔记-day04(概念)
    一、了解同源策略和跨域两个页面的协议,域名和端口都相同例如,下表给出了相对于http://www.test.com/index.html页面的同源检测:URL是否同源原因http://www.test.com/other.html是同源(协议、域名、端口相同)https://www.test.com/about.html否协议不同(http......
  • 【LeetCode】每日一题 —— 2056. 棋盘上有效移动组合的数目
    一、题目2056.棋盘上有效移动组合的数目有一个8∗88*88∗8的棋盘,它包含n个棋子(棋子包括车,后和象三种)......
  • 【Leetcode 每日一题】2056. 棋盘上有效移动组合的数目
    问题背景有一个8×88\times88×8的棋盘,它包含n......