[英]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.