我在做一个可以安排员工时间的项目。这些数据都在谷歌单子上,每个员工都会被指定为工作场所。有几种可能性:数字,罗马数字,字符,加法,.
问题是如何处理罗马数字。一整天都在排列,一个员工有一个项目。我的想法是分离包含“I”或“V”(数字从I到VII)的项目。接下来,我想过滤掉一些包含这些字母,但不合适的项目。因此,创建了一个包含待排除项的数组(这些条目是固定的)。
代码的一部分:(在实际中,数据是从工作表中输入的。这里只是一个示例数组)
var monTr = ['u/1', 'I/4', 'G1', 'G23', 'LD', 'E1', 'E2 /3', 'LL', 'VAR', 'III', 'VUV', 'V - 11', 'II', 'PB', 'V', '-', 'IV'];
var toExcl = ['VAR', 'VUV', 'EIT'];
var b = monTr
.map(function (inp, index) { if (inp.indexOf('I') !== -1 || inp.indexOf('V') !== -1) { return index } })
.filter(index => index != null);
Logger.log(b);
var c = monTr
.map(function (inp, index) { if (inp.indexOf('I') !== -1 || inp.indexOf('V') !== -1 && toExcl.forEach(function (item) { inp.indexOf(item) !== -1 })) { return index } })
.filter(index => index != null);
Logger.log(c); 第一部分如预期一样工作;b包含I或V的所有ID,但第二部分不能正常工作;c不包含ID 11 (‘V-11’)和14 ('V')。我做错了什么?
发布于 2020-12-01 16:59:38
使用indexOf()
forEach()返回,但也可以使用includes() on toExcl来完成所需的任务。
const monTr=['u/1','I/4', 'G1','G23', 'LD', 'E1', 'E2 /3', 'LL', 'VAR', 'III', 'VUV', 'V - 11', 'II', 'PB', 'V', '-', 'IV'];
const toExcl=['VAR', 'VUV', 'EIT'];
const b = monTr.map(function(inp, index) {
if (inp.includes('I') || inp.includes('V')) {
return index;
}
}).filter(index => index != null);
console.log(b);
const c = monTr.map(function(inp, index) {
if (inp.includes('I') || inp.includes('V') && !toExcl.includes(inp)) {
return index
}
}).filter(index => index != null);
console.log(c);
发布于 2020-12-02 11:08:32
我不确定这是否有帮助,但我想我应该添加一个使用reduce的示例:
const monTr=['u/1','I/4', 'G1','G23', 'LD', 'E1', 'E2 /3', 'LL', 'VAR', 'III', 'VUV', 'V - 11', 'II', 'PB', 'V', '-', 'IV'];
const toExcl=['VAR', 'VUV', 'EIT'];
const filter_indexes = (filter, array) =>
array.reduce(
(acc, value, index) => acc.concat(filter(value) ? index : []),
[]
);
const criteria_b = (value) => ['I', 'V'].some(letter => value.includes(letter));
const criteria_c = (value) => criteria_b(value) && !toExcl.includes(value);
const b = filter_indexes(criteria_b, monTr);
const c = filter_indexes(criteria_c, monTr);
console.log('b: ', b);
console.log('c: ', c);
https://stackoverflow.com/questions/65094333
复制相似问题