【问题标题】:find new values in comma separated string using Javascript使用 Javascript 在逗号分隔的字符串中查找新值
【发布时间】:2020-01-04 15:29:35
【问题描述】:

我有一个数组

       obj = ["30890560", "29092960", "28652336", "28642195", "26512957", "26190575", "25465297", "25144372", "23579449"]

我需要将它与逗号分隔的字符串进行比较

     "29092960,28652336,28642195,26512957,26190575,25465297,25144372"

有没有办法让我得到一个新的逗号分隔字符串,例如

       let newList = "30890560,23579449"

数组的值总是比用于比较的字符串多。这需要在 Vue.js 页面中使用 JavaScript 来完成,所以没有 jQuery。

我需要拆分逗号分隔的字符串并比较数组中的每个值吗?

类似

        ["30890560", "29092960", "28652336", "28642195", "26512957", "26190575", "25465297", "25144372", "23579449"].includes('30890560');

会创建一个寻找错误值的循环吗?我需要一些帮助来构建循环。谢谢

【问题讨论】:

  • 你对你想要达到的目标的解释不是很清楚。
  • “有没有办法”。就在这里。您似乎已经对可能需要做的事情有所了解——拆分字符串和比较数组值——所以试一试,看看你想出了什么。然后,如果您遇到困难,请返回 minimal reproducible example 来证明您的问题。也看看How to Ask
  • 定义差异,这是A-B吗?您可以将两者都转换为数组,比较并将差异转换为逗号分隔的字符串。

标签: javascript arrays


【解决方案1】:

const arr1 = ["30890560", "29092960", "28652336", "28642195", "26512957", "26190575", "25465297", "25144372", "23579449"];
const str = "29092960,28652336,28642195,26512957,26190575,25465297,25144372";
const arr2 = str.split(','); // Convert CSV String to array

const res = arr1.filter(v => !arr2.includes(v));

console.log(res)

String/split MDN
Array/filter MDN
Array/includes MDN

【讨论】:

  • 感谢您的出色回答。像你这样的人让 StackOverflow 变得很棒
  • @user1314159 脸红 :) 很高兴为您提供帮助,并感谢您对所有答案的友好 cmets
【解决方案2】:

您可以使用split, set and filter

const arr1 = ["30890560", "29092960", "28652336", "28642195", "26512957", "26190575", "25465297", "25144372", "23579449"]
const str = "29092960,28652336,28642195,26512957,26190575,25465297,25144372"
const arr2 = new Set(str.split(','))

const output = arr1.filter(v => !arr2.has(v));

console.log(output)

【讨论】:

  • 感谢您的出色回答。像你这样的人让 StackOverflow 变得很棒
  • @user1314159 总是很高兴的帮助:) 您可以将任何您认为以最佳方式解决您的问题的答案标记为正确答案
【解决方案3】:

您可以通过JavaScript 的split() 方法将字符串分隔成字符串数组。然后比较两个数组。

var obj = ["30890560", "29092960", "28652336", "28642195", "26512957", "26190575", "25465297", "25144372", "23579449"];

var str = "29092960,28652336,28642195,26512957,26190575,25465297,25144372";

var list = str.split(',');

console.log(list);

// Loop over two arrays to compare their equality.
for (let i = 0; i < list.length; i++) {
   if (list[i] !== obj[i]) {
     // Do something.
   }
}

【讨论】:

  • 我将使用其他解决方案之一,但非常感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 2014-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多