簡體   English   中英

如何合並單個對象的值?

[英]How can I merge individual object values?

我有以下問題:

我想從SQL數據庫中讀取我的表名,然后比較它是否已經存在。 我知道這里有IF EXISTS ...的公式,但是IF不起作用..所以這是我以前的變體:

首先,我提取了filename.csv(C:\\ Users \\ Frederic \\ Desktop \\ Drag&Drop ...)之前的所有內容,然后提取了“ .csv”。 不要驚訝為什么51;)文件名太長

var filename  = filePath.slice(51);
    var richtigername = filename.replace(".csv","").toString();
    console.log(richtigername)

這是控制台中的結果:

例如:fxbewertung

第二步,讓我顯示文件名:

        connection.query('Show tables from datein', function(err, datein) {
        let string = JSON.stringify(datein);
        let json =  JSON.parse(string);
        console.log(json)

這是控制台中的結果:

[ { Tables_in_datein: 'fxbewertung' },
  { Tables_in_datein: 'kontoauszug' },
  { Tables_in_datein: 'lsreport' } ]

此外,我提取了值(SQL表的名稱):

     for (var k = 0; k < json.length; k++) { 
         var werte = Object.values(json[k])
             console.log(werte)
     };

這是控制台中的結果:

[ 'fxbewertung' ]
[ 'kontoauszug' ]
[ 'lsreport' ]

現在,我不知道如何進行比較,例如對於文件fxbewertung存在一個數據庫('fxbewertung')。

我的考慮是以某種方式瀏覽各個數組..或合並然后瀏覽。 最后應該是對還是錯

PS。:可能很復雜,但是我不是真正的程序員或其他人;)

最好的祝福

弗雷德里克

假設您已完成執行查詢並按以下方式存儲數據:

const queryResult = [ { Tables_in_datein: 'fxbewertung' },
  { Tables_in_datein: 'kontoauszug' },
  { Tables_in_datein: 'lsreport' } ]

然后,您需要map此數組以提取值並將它們存儲在單個數組中,如下所示:

const values = queryResult.map(e=>e[Object.keys(e)[0]]) // ["fxbewertung", "kontoauszug", "lsreport"]

由於要通過提供文件名來查找是非結果,因此需要使用indexOf來實現。

const valueExists = filename => values.indexOf(filename) !== -1

之后,使用您要查找的文件名執行valueExists

valueExists("kontoauszug"); // true
valueExists("potato"); // false

希望這可以幫助!

您可以使用some()方法檢查該文件名是否存在表。

 var tableExists = tables.some(item => item['Tables_in_datein'] === filename);

現場示例:

 var tables = [{ Tables_in_datein: 'fxbewertung' }, { Tables_in_datein: 'kontoauszug' }, { Tables_in_datein: 'lsreport' } ]; var filename = 'fxbewertung'; var tableExists = tables.some(item => item['Tables_in_datein'] === filename); if (!tableExists) { // Table not found for filename. } else { // Table found. Do something. } 

一個有效的解決方案是使用Array.prototype.find() 它從找到真實值的那一刻起將返回的位置,並且直到結束都不會迭代(除非匹配末尾存在)。

演示代碼:

 const tablesArr = [ { Tables_in_datein: "fxbewertung" }, { Tables_in_datein: "kontoauszug" }, { Tables_in_datein: "lsreport" } ]; const tabletoFind = "fxbewertung"; const tableFound = tablesArr.find(item => item["Tables_in_datein"] === tabletoFind) ? true: false; console.log(tableFound); if(tableFound){ //*yes table found*/ }else{ ///*nope table not found*/ } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM