[英]Reduce objects from array if object's property contains any of substrings
我正在嘗試減少 arrays 中的所有對象,即它們的屬性“Title”包含單獨的 JSON 文件中包含的任何 substring。 我一直在嘗試通過 objects 屬性過濾 arrays 但它實際上不起作用,reduce() 方法會更好地實現它。
目標是對未排除的對象進行一些數學運算,例如:如果任何 object 的屬性 Title 與包含的不同(qa、質量保證、軟件測試員),那么我們應該將其刪除並且不要將其計算在內
我正在嘗試用 noobie 方法來實現它,但無法讓它工作,我認為更好的是通過減少不應該在計算中采用的對象來轉換 positionArray,然后進行數學運算。
我的 function
calculateSoftwareExperience: async function () {
fileToCurate.forEach(candidate => {
const positionsArray = candidate.softwareIndustryPositions;
console.log(positionsArray)
//const reducedArray = positionsArray.reduce(x => x.title)
//console.log(positionsArray)
if (Array.isArray(positionsArray) && positionsArray.length) {
// array exists and is not empty
positionsArray.forEach(position => {
let title = position.title;
if (titlesIncluded.some(x => title.includes(x))) {
console.log(title)
const firstFrom = positionsArray[positionsArray.length - 1].from;
const lastTo = positionsArray[0].to;
let diff = lastTo - firstFrom;
let days = (diff * 1000) / (60 * 60 * 24 * 1000) / 1000;
let months = Math.floor(days / 31);
//console.log(firstFrom, "to", lastTo, "diff = ", months);
candidate.softwareIndustryExp = months;
//console.log(months)
}
});
} else {
candidate.softwareIndustryExp = 0;
}
});
},
位置數組 output
[
{
flagged: false,
from: 2019-10-31T23:00:00.000Z,
to: 2020-01-31T23:00:00.000Z,
title: 'junior manual tester'
},
{
flagged: false,
from: 2018-05-31T22:00:00.000Z,
to: 2019-09-30T22:00:00.000Z,
title: 'junior administrator'
},
{
flagged: false,
from: 2016-03-31T22:00:00.000Z,
to: 2016-03-31T22:00:00.000Z,
title: 'praktykant'
}
]
帶子字符串的輸入
"titlesIncluded": [
"qa",
"quality engineer",
"qa automation",
"software tester",
"qa engineer"
],
我找不到使用 reduce() 方法的方法,但我以我的菜鳥方式完成了它。 我正在做的基本上是創建新的 object 並按屬性標題過濾,然后將每個 object 推入數組並進行適當的數學運算。 這是代碼:
calculateSoftwareExperience: async function () {
fileToCurate.forEach(candidate => {
const positionsArray = candidate.softwareIndustryPositions;
if (Array.isArray(positionsArray) && positionsArray.length) {
let roletypeArray = [];
positionsArray.forEach(position => {
let title = position.title;
if (titlesIncluded.some(x => title.includes(x))) {
let pos = {};
pos.title = title;
pos.from = position.from;
pos.to = position.to;
roletypeArray.push(position);
}
});
if (Array.isArray(roletypeArray) && roletypeArray.length) {
const firstFrom = roletypeArray[roletypeArray.length - 1].from;
const lastTo = roletypeArray[0].to;
let diff = lastTo - firstFrom;
let days = (diff * 1000) / (60 * 60 * 24 * 1000) / 1000;
let months = Math.floor(days / 31);
candidate.softwareIndustryExp = months;
} else {
candidate.softwareIndustryExp = 0;
}
} else {
candidate.softwareIndustryExp = 0;
}
});
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.