簡體   English   中英

如何使用 Javascript 過濾多個 Arrays

[英]How to filter multiple Arrays with Javascript

我正在嘗試過濾多個 arrays 技能(它們來自 json 文件)(下面的示例)並打印出候選人姓名+所有技能

┌─────────┬───────────────────────┐
│ (index) │        Values         │
├─────────┼───────────────────────┤
│    0    │       'angular'       │
│    1    │         'css'         │
│    2    │      'bootstrap'      │
│    3    │      'react.js'       │
│    4    │        'rxjs'         │
│    5    │         'git'         │
│    6    │        'java'         │
│    7    │       'graphql'       │
│    8    │       'node.js'       │
│    9    │        'redux'        │
│   10    │        'json'         │
│   11    │        'html'         │
│   12    │         'sql'         │
│   13    │        'linux'        │
│   14    │      'gatsby.js'      │
│   15    │       'mongodb'       │
│   16    │     'javascript'      │
│   17    │         'php'         │
│   18    │        'ionic'        │
│   19    │ 'amazon web services' │
└─────────┴───────────────────────┘

但不是所有技能,我只是獲得單個值(1 個技能/1 行),並且 output 在控制台中看起來像這樣:

這家伙知道 javascript
這家伙知道nodejs
這家伙知道反應
這家伙知道 javascript

但目標是在 1 行中擁有所有技能,如下所示:

這家伙知道 javascript nodejs 反應

輸入。json

{
    "stackIncluded": [
    "nodejs",
    "javascript"
    ]
}

這是我編寫的 function 的代碼index.js

'use strict';
const curationInput = require('./curation-input.json');
const fileToCurate = require('./trlele.json');

async function curateStack() {
  const stackIncluded = curationInput.stackIncluded;
  fileToCurate.forEach(candidate => {
    candidate.folder.forEach(folder => {

      // get Arrays with all objects that including candidates skills
      const allSkills = folder.skills;

      // map Arrays with objects to Arrays with skills only
      const values = allSkills.map(item => item.value);

      // lowercase the values of skills
      const lowercaseSkills = values.map(skill => skill.toLowerCase());
      //console.table(lowercaseSkills)

      lowercaseSkills.forEach(skillsArray => {
        if (stackIncluded.includes(skillsArray)) {
          console.log('this guys knows', skillsArray);
        }
      });

    });
  });
}

您需要更改腳本的最后一部分

let str = 'this guys knows '
lowercaseSkills.forEach(skillsArray => {
    if (stackIncluded.includes(skillsArray)) {
        str += skillsArray + ' ';
    }
});
console.log(str);

另一種方式

const skills = lowercaseSkills.filter(item => stackIncluded.includes(item));
console.log('this guys knows', skills.join(', ')]);

暫無
暫無

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

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