【问题标题】:I have two array of string. I want to compare both the array by lowerCasing each values in the array an return true/false if it matches我有两个字符串数组。我想通过对数组中的每个值进行小写来比较两个数组,如果匹配则返回真/假
【发布时间】:2020-09-16 06:10:03
【问题描述】:

我举两个数组的例子。最好的方法是什么?我们可以使用 some() 函数吗?

let firstArray = ['WickedWeed'];
let secondArray = ["wickedweed'];


//Output

true;

【问题讨论】:

  • 请访问help center,使用tour查看内容和How to Ask。做一些研究,搜索关于 SO 的相关主题;如果您遇到困难,请发布您尝试的minimal reproducible example,并使用[<>] sn-p 编辑器记录输入和预期输出。
  • 两个具有完全相同的数组和两个具有不同条目的数组的输出是什么?所有条目都必须相同吗?然后使用 Array.every。请详细说明,否则您的问题可能会被否决并关闭
  • 请更新您的问题以包含您的尝试。

标签: javascript node.js arrays


【解决方案1】:

如果只有一个元素,那么:

firstArray[0].toLowerCase() == secondArray[0].toLowerCase()

如果有多个元素,那么

firstArray.every((e,i)=>(secondArray[i].toLowerCase()==e.toLowerCase()))

如果不需要匹配索引,那么:

firstArray.map(e=>e.toLowerCase()).every(e=>secondArray.map(e=>e.toLowerCase()).includes(e))

var firstArray=["abc","deF","zzz"];
var secondArray=["ABC","DEF","zZz"];

console.log(firstArray.map(e=>e.toLowerCase()).every(e=>secondArray.map(e=>e.toLowerCase()).includes(e)));

对于长数组,这在计算上可能效率非常低,在这种情况下,最好分两步完成:

var firstArray=["abc","deF","zzz"];
var secondArray=["ABC","DEF","zZz"];
var secondArrayl = secondArray.map(e=>e.toLowerCase());
console.log(firstArray.map(e=>e.toLowerCase()).every(e=>secondArrayl.includes(e)));

如果你不需要匹配每个元素:

    var firstArray=["abc","deF","zzz"];
    var secondArray=["ABC"];
    var secondArrayl = secondArray.map(e=>e.toLowerCase());
    console.log(firstArray.map(e=>e.toLowerCase()).some(e=>secondArrayl.includes(e)));

【讨论】:

  • 不可能有多个元素
  • 是否只需要匹配对应的元素,即。具有相同索引的元素?
  • 没有。它应该在找到真实值后立即返回 true。就像 some() 的工作原理一样
  • 我给你投了赞成票,因为根据所提供的少量信息,你的回答尽可能好。
【解决方案2】:

你可以使用 loadash docs for isequal

_.isEqual(array1, array2)

【讨论】:

  • 不区分大小写吗?
  • 这可能有助于完成您的答案,以便用户可以看到输入和输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-08
  • 2022-01-02
  • 2017-04-08
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
相关资源
最近更新 更多