【问题标题】:get key and value of array via underscore each通过下划线获取数组的键和值
【发布时间】:2016-10-31 19:35:58
【问题描述】:

我想遍历一个数组并获取它的键和值。这就是我正在做的,但我没有得到任何输出。我做错了什么?

let regexes = [];
regexes['some.thing'] = /([^.]+)[.\s]*/g;

_.each(regexes, function(regex, key) {
    console.log(regex, key);
});

【问题讨论】:

  • Javascript 中的数组有数字索引。如果你想迭代一个对象,你可以在原版中使用:for(var key in yourObjectOrArrayLike){console.log(key + ' - ' + yourObjectOrArrayLike[key]);}

标签: javascript arrays underscore.js each


【解决方案1】:

您正在为数组分配一个属性。 Lodash 试图遍历数组的数字索引,但没有。将数组更改为对象,Lodash 将遍历其可枚举的属性:

let regexes = {};
regexes['some.thing'] = /([^.]+)[.\s]*/g;

_.forEach(regexes, function(regex, key) {
    console.log(regex, key);
});

或者,如果需要使用数组,只需将值压入数组即可:

let regexes = [];
regexes.push(/([^.]+)[.\s]*/g);

_.forEach(regexes, function(regex, i) {
    console.log(regex, i);
});

【讨论】:

【解决方案2】:

_.each 遍历数组的索引。您正在向数组对象添加 非数字属性。你的数组是空的,_.each 回调没有被执行。看来您想使用常规对象 ({}) 而不是数组:

let regexes = {};

现在_.each 应该遍历对象拥有(通过使用hasOwnProperty 方法)属性。

【讨论】:

    【解决方案3】:

    您正在使用数组并向其添加一个无效的属性。为它使用对象

    let regexes = {};
    regexes['some.thing'] = /([^.]+)[.\s]*/g;
    
    _.each(regexes, function(regex, key) {
        console.log(regex, key);
    });
    

    【讨论】:

    • 以这种方式将属性添加到数组中是完全有效的。但是,在这种情况下,它并没有达到预期的结果。 :-)
    • 是的,我知道,但它不是推荐的,用处不大
    猜你喜欢
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    相关资源
    最近更新 更多