使用 Javascript 在逗号分隔的字符串中查找新值

Posted

技术标签:

【中文标题】使用 Javascript 在逗号分隔的字符串中查找新值【英文标题】:find new values in comma separated string using 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吗?您可以将两者都转换为数组,比较并将差异转换为逗号分隔的字符串。 【参考方案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 MDNArray/filter MDNArray/includes MDN

【讨论】:

感谢您的出色回答。像你这样的人让 *** 变得很棒 @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)

【讨论】:

感谢您的出色回答。像你这样的人让 *** 变得很棒 @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.
   

【讨论】:

我将使用其他解决方案之一,但非常感谢您的回答。

以上是关于使用 Javascript 在逗号分隔的字符串中查找新值的主要内容,如果未能解决你的问题,请参考以下文章

Javascript:以逗号分隔的字符串搜索数字的最佳方式

用逗号分隔的字符串转换为逗号分隔的整型数组(前端技巧)

javascript 以逗号截取字符

javascript 将字符串数组转换为以逗号分隔的列表

如何在Javascript中用逗号分隔的值匹配数组?

如何在 javascript (ionic | Angular | NodeJS | MongoDB) 中将包含对象的数组展平和减少为逗号分隔的字符串