日常积累输出代码

174 阅读2分钟
  • 1027
    const carData = [
      { name: "card_id", value: "2464", empty: false },
      { name: "obu_id", value: "395", empty: false },
      { name: "plate_no", value: "藏O4416", empty: false },
    ];
    const ceshiData = { card_id: "2464", obu_id: "395", plate_no: "藏O4416" };
    // 把 carData 改成 ceshiData
    function Demo(data) {
      let list = {}
      data.map(item => {
        list[item.name] = item.value
      })
      return list
    }
    let list = Demo(carData)
    console.log(list); // {card_id: "2464", obu_id: "395", plate_no: "藏O4416"}

    // 核心代码 obj[item.name] = item.value
Object.assign()
  • Object.assign() 可以用来处理数组,但是会把数组视为对象。
Object.assign([1, 2, 3], [4, 5, 6]
// [4, 5, 6]
  • 上面的代码中 Object.assign 把数组视为属性名为 0、1、2 的对象,因此源数组的 0 下标属性 4 覆盖了目标数组的 0 好属性 1
    Object.keys(['我', '是', '谁']) // ["0", "1", "2"]
    Object.keys({ name: '小王', age: 21 }) // ["name", "age"]
  • Object.keys 是以数组的形式输出属性名

image.png

    [1, 2, 3].map((item, index) => parseInt(item, index))
    // [1, NaN, NaN]
    // parseInt(数值, 进制)

6、下面代码输出的结果是什么?

前端经典面试题60道,附答案!

var a = {n1};
var b = a;
a.x = a = {n2};

console.log(a.x)     
console.log(b.x)

参考答案

undefined
{n:2}

首先,a和b同时引用了{n:2}对象,接着执行到a.x = a = {n:2}语句,尽管赋值是从右到左的没错,但是.的优先级比=要高,所以这里首先执行a.x,相当于为a(或者b)所指向的{n:1}对象新增了一个属性x,即此时对象将变为{n:1;x:undefined}。之后按正常情况,从右到左进行赋值,此时执行a ={n:2}的时候,a的引用改变,指向了新对象{n:2},而b依然指向的是旧对象。之后执行a.x = {n:2}的时候,并不会重新解析一遍a,而是沿用最初解析a.x时候的a,也即旧对象,故此时旧对象的x的值为{n:2},旧对象为 {n:1;x:{n:2}},它被b引用着。
后面输出a.x的时候,又要解析a了,此时的a是指向新对象的a,而这个新对象是没有x属性的,故访问时输出undefined;而访问b.x的时候,将输出旧对象的x的值,即{n:2}。

    // 1106
    let foo = '11' + 2 - '1'
    console.log(foo);// 111
    console.log(typeof foo); //  number
    
    
    typeof 返回的数据类型有哪些
    console.log(typeof 1);           // number
    console.log(typeof true);        // boolean
    console.log(typeof 'abc');       // string
    console.log(typeof Symbol(1));   // symbol
    console.log(typeof undefined);   // undefined
    console.log(typeof null);        // object
    console.log(typeof Array);       // function
    console.log(typeof String);      // function
    // split 和 join 的区别
    // split 是分割字符,返回一个数组
    let a = 'hell,oworld'
    let b = ['hello', 'world']
    console.log(a.split('')); // ["hell", "oworld"]
    console.log(a.split(',')); // ["h", "e", "l", "l", ",", "o", "w", "o", "r", "l", "d"]
    console.log(b.join('')); // helloworld
    console.log(b.join('+')); // hello+world
    
    
    // 倒叙数组
    let a = '1234567'
    console.log(a.split('').reverse().join(''));