【问题标题】:lodash; replace and merge two arrays of strings罗达什;替换和合并两个字符串数组
【发布时间】:2015-06-19 06:48:21
【问题描述】:

lodash 中是否有任何函数可以合并两个数组,例如;

var arr_1 = ['1', '0', '1'], arr_2 = ['0', '1', '1'];

结果应该返回:

console.log(new_arr); // ['0', '0', '1']

更新

每个数组有 3 个元素(字符串)。无论何时在两个数组中的任何一个中找到'0',它都必须保留在结果中。

【问题讨论】:

  • 你如何得到这个结果,第一个数字来自第二个数组,然后第二个数字来自第一个数组等等。这里有系统吗?它应该选择最小的数字还是什么?
  • 结果应该如何确定?如果索引处的两者都是'1',则'1' 否则'0'?
  • var arr_3 = arr_1.map(function(x, i) { return Math.min(x, arr_2[i]) });
  • 你为什么不看看你链接到的文档?
  • @FelixKling 我做了,但找不到我需要的东西。

标签: javascript arrays merge lodash


【解决方案1】:

这个呢:

ES5:

_.map(_.zip(arr_1,arr_2), function(values) { 
      return values[0] <= values[1] ? values[0] : values[1]; 
})

ES6:(更好)

_.zip(arr_1,arr_2).map( v => v[0] <= v[1] ? v[0] : v[1] ); 

这不仅仅是一种方法,而是使用lodash zip

【讨论】:

    【解决方案2】:

    以下内容应该可以满足您的需求。它使用flatten() 创建一个数组,然后从那里reduce() 创建一个允许重复“0”并删除所有其他重复的新数组。

    _([arr_1, arr_2])
        .flatten()
        .reduce(function(result, item) {
            if (item === '0' || !_.includes(result, item)) { 
                result.push(item);
            }
            return result; 
        }, []);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-26
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多