Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Lo破折号,数组和集合之间的差异_Javascript_Backbone.js_Lodash - Fatal编程技术网

Javascript Lo破折号,数组和集合之间的差异

Javascript Lo破折号,数组和集合之间的差异,javascript,backbone.js,lodash,Javascript,Backbone.js,Lodash,浏览一下Lo Dash文档,可以发现API分为以下几类: 阵列 锁链 收藏 功能 对象 公用事业 方法, 和属性 对Arrays API的更详细了解显示了大约30种适用于阵列的不同方法 Collections API比Arrays API有更多的方法,并且它们不共享相同的方法 在Collections API中,集合被描述为迭代的对象,可以是数组: 集合(数组|对象|字符串):要迭代的集合 另外,有趣的是,还有一个Collections API方法\uu.toArray,它从集合返回一个数组:

浏览一下Lo Dash文档,可以发现API分为以下几类:

  • 阵列
  • 锁链
  • 收藏
  • 功能
  • 对象
  • 公用事业
  • 方法,
  • 和属性
  • 对Arrays API的更详细了解显示了大约30种适用于阵列的不同方法

    Collections API比Arrays API有更多的方法,并且它们不共享相同的方法

    在Collections API中,集合被描述为迭代的对象,可以是数组:

    集合(数组|对象|字符串):要迭代的集合

    另外,有趣的是,还有一个Collections API方法
    \uu.toArray
    ,它从集合返回一个数组:

    论据

    集合(数组|对象|字符串):要转换的集合。返回

    (数组):返回新转换的数组


    是否有人知道Lo Dash API中数组和集合之间的形式差异?我认为这是由于Backbone.js造成的差异,但是,我现在质疑我的推理,因为这些方法可能在其他地方可用。提前感谢。

    最好看一看更详细的,从中可以得出这种区别。它说:

    集合函数用于数组、对象和类似数组的对象,如
    参数
    、节点列表和类似对象。但它通过duck类型工作,因此避免传递带有数值
    length
    属性的对象


    基本上,“集合”是实现某种“iterable”接口的东西,它们在内部使用相同的迭代方法(尽管Lodash源代码比下划线更复杂)。所有的“收集方法”都适用于数组和对象(以及一些更合适的东西),而数组方法应该只适用于数组(或者所有具有
    .length
    和数字索引的对象),而对象方法适用于任何对象。

    所有数组都是收集,但并非所有收集都是数组。对象(即
    {k:v,…}
    )是不是数组的集合。许多迭代器可以在非数组集合上进行迭代。在此上下文中,您可以将数组或多或少地看作是由连续非负整数索引的有序集合

    例如,这两项工作:

    _([6, 11, 23]).each(function() {
        console.log(arguments);
    });
    _({ a: 6, b: 11, c: 23 }).each(function() {
        console.log(arguments);
    });
    
    演示:


    函数得到的参数取决于您迭代的对象类型。如果你在一个数组上迭代,那么你会得到元素和索引,如果你在一个对象上迭代,那么你会得到值和键。

    这是否意味着集合API的所有方法都可以应用到数组、字符串和对象上?它们应该可以处理任何可以迭代的东西,所以是的。谢谢@mu太短了!