如何使用 JavaScript / Node js 存储对象中不匹配的字符串

Posted

技术标签:

【中文标题】如何使用 JavaScript / Node js 存储对象中不匹配的字符串【英文标题】:How to store unmatched string from an object using JavaScript / Node js 【发布时间】:2021-07-16 07:43:59 【问题描述】:

我有点疑惑,不知道解决办法。

我有一个对象,我想检查字符串是否存在

因为我有一个代码来检查对象中是否存在字符串

如果字符串与值不匹配怎么办

作为这个不匹配的值,我想保存在与fileName不匹配的数据库中

我通过运行下面的循环代码得到了我的字符串fileName

for (let i = 0; i <= readFileArray.length - 1; i++) 
      for (let j = 0; j < readFileArray[i].length; j++) 
        if (readFileArray[i][j] === comparePathName) 
          let fileName = readFileArray[1][j];
        
      
    

这样这个文件名在for循环运行后就可以了

fileName: Java
fileName: Node JS
fileName: javascript
fileName: Asp.net
fileName: Oops

我想检查fileName 的值是否存在于我的对象(productDoc)中

假设我的productDoc 看起来像这样
productDoc = [
 
    id: 1,
    name:Java,
    description: language
  ,
  
    id: 2,
    name:JavaScript,
    description: language
  ,
  
    id: 3,
    name:Oops,
    description: Subject
  
]

所以我想通过我的fileName 检查productDoc 中存在的每个名称

匹配的值应该以不同的方式存储,不匹配的值应该以不同的方式存储 因为我需要将这个不匹配的值存储在我的数据库中,所以匹配的值已经在数据库中

matched: Java
matched: JavaScript
matched: Node Js
unMatched: Asp.net
unMatched: Oops

所以我可以在 If else 条件下使用这个值

if(matched)
updateDocument(matched)
else
addDocument(unmatched)

【问题讨论】:

fileName 是什么?字符串、数字、数组、对象? 它是一个字符串@nur 举个例子会很有帮助。你想怎么匹配?​​ 好的,我会更新我的问题 你好 Nur 我已经更新了问题看看:) 【参考方案1】:

正如我在 cmets 中所说,创建一个数组,然后检查它是否包含...

var fileName = ["Oops", "Java", "JavaScript", "NodeJs", "ReactJs"],
    productDoc = [ name: "Java", ,  name: "JavaScript", ,  name: "Oops", ],
    productNames = Array.from(productDoc, item => item.name),
    matched = [],
    unMatched = [];

for (const name of fileName)
    productNames.includes(name) ? matched.push(name) : unMatched.push(name);

console.log( matched, unMatched );

【讨论】:

你好@nur 我的fileName 不是一个数组,因为我正在运行循环我在fileName 中得到的所有值都是字符串类型 是的,创建了文件名数组。我可以直接将数组保存在数据库中吗?我不知道这个 您不必创建fileName 的数组。我只是在for/of循环中使用它进行迭代...【参考方案2】:

一种方法是从一个目录中读取所有文件

var fileList = [];
path = 'YOUR_PATH_TO_DIRECTORY';

fs.readdirSync(path).forEach(file => 
  
   fileList.push(file);    
   //this will read all the files and save push it in fileList
  
)

然后,您可以将读取的文件名与数组对象进行比较

var matchingValue = [];
var unMatchingValue = [];

for(var i = 0; i < this.productDoc.length; i++)
    
        for(var j = 0; j < this.fileList.length; j++)
        
          if(this.productDoc[i].name == this.fileList[j])
          
            this.matchingValue[i].push(this.productDoc[i].name);

            //this will push the matching element from the productDoc
            //in the new array matchingValue
          
          else if(this.product[i].name != this.fileList[j])
          
            this.unMatchingValue[i].push(this.product[i].name);
            
          
        
    

【讨论】:

嗨@Angular我需要匹配的值来更新我的数据库和不匹配的值添加到数据库中 @Aakash,我已经更新了答案。我还没有测试过代码,但是应该是这样的。

以上是关于如何使用 JavaScript / Node js 存储对象中不匹配的字符串的主要内容,如果未能解决你的问题,请参考以下文章

javascript 如何将MongoDB与Node.js一起使用

如何使用 node.js 和 javascript 模仿 Facebook 的“链接共享”功能

如何使用 node.js 在服务器端使用纯 JavaScript 读取 JSON 文件?

Solana - 如何从 JavaScript / Node.js 中的本地密钥对获取帐户?

如何使用 JavaScript 和 Node.js 将捕获的图像存储到 MySQL 数据库中

如何系统地学习Node.js?