代码之家  ›  专栏  ›  技术社区  ›  user944513

方括号在映射函数javascript中是如何工作的?[副本]

  •  1
  • user944513  · 技术社区  · 8 年前
    var a = {a:{bb:"mm"},b:{bbb:"bb"}}
    var v= Object.entries(a)
    
    // a print array items value that is fine
    v.map((a,b)=>{console.log(a)})
    
    // print the index that is fine
    
    v.map((a,b)=>{console.log(b)})
    
    // why it print 
    //
    //{bb: "mm"}
    //{bbb: "bb"}
    v.map(([a,b])=>{console.log(b)})
    
    //output 
    

    https://jsbin.com/zevuqedupa/edit?html,js,console,output index

    您好! 我的问题是,为什么要印 object

    2 回复  |  直到 8 年前
        1
  •  0
  •   Christian Vincenzo Traina    8 年前

    这个 Object.entries(..) 方法接受一个对象并返回一个键值对数组,即第一个元素是键,第二个元素是值的其他数组。

    在这种情况下 v 变量为:

    [['a', {bb: 'mm'}], ['b', {bbb: 'bb'}]];
    

    map 方法将迭代每个内部数组。

    因此,在第一次迭代中,它将作为第一个参数接收:

    ['a', {bb: 'mm'}]
    

    ['b', {bbb: 'bb'}]
    

    a 作为数组的第一个元素 b 是数组的第二个元素。

    打印b,因此在每次迭代时打印数组的第二个元素,这就是值。

    如果需要,还可以打印索引,因为 [a, b] 是第一个参数。

    v.map(([a,b], index) => {console.log(`value: ${b}, index: ${index}`)})
    
        2
  •  0
  •   Adrian Brand    8 年前
    (a,b)=>{console.log(b)}
    

    需要两个名为a和b的参数,称为f(a,b);

    ([a,b])=>{console.log(b)}
    

    需要and数组并命名0和1索引a和b,其调用方式类似于f([a,b])