gpt4 book ai didi

Javascript - 在数组中插入占位符值以保持数组长度

转载 作者:行者123 更新时间:2023-11-30 16:19:06 26 4
gpt4 key购买 nike

我正在使用 Google Spreadsheets,我能够返回一个数组数组,其中嵌套数组是电子表格中的一行。

每一行的长度都需要完全相同,但不一定每个单元格都有一个值,因此为了弥补这些稀疏值,我使用了一个名为 empty 的占位符

例如,如果过滤器类型是 EXCLUDE 或 INCLUDE,将有四个值可用(details.fielddetails.matchTypedetails.expressionValue, details.caseSensitive);但是,如果过滤器类型是大写或小写,则只有一个值可用 (details.field)。

下面是完整的代码,它看起来比实际大得多 - 只有很多 if 语句。

有没有更好的方法来处理这些稀疏的占位符元素?我想减少代码。

Api.prototype.getAccountFilterData = function (accountsList) {
var details, rowDefaults;
var empty = '-';
var results = [];

accountsList.forEach(function (account) {
this.wrapperGetAccountFilterData(account.id, function (filtersList) {
filtersList.forEach(function (filter) {
rowDefaults = [
account.name,
account.id,
filter.name,
filter.id,
filter.type
];

if (filter.type === 'EXCLUDE' || filter.type === 'INCLUDE') {
details = filter.getIncludeDetails() || filter.getExcludeDetails();

results.push(rowDefaults.concat([
details.field,
details.matchType,
details.expressionValue,
details.caseSensitive,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty
]));
}

if (filter.type === 'UPPERCASE' || filter.type === 'LOWERCASE') {
details = filter.uppercaseDetails || filter.lowercaseDetails;

results.push(rowDefaults.concat([
details.field,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty
]));
}

if (filter.type === 'SEARCH_AND_REPLACE') {
details = filter.searchAndReplaceDetails;

results.push(rowDefaults.concat([
details.field,
empty,
empty,
details.searchString,
details.replaceString,
details.caseSensitive,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty,
empty
]));

}

if (filter.type === 'ADVANCED') {
details = filter.advancedDetails;

results.push(rowDefaults.concat([
details.field,
empty,
empty,
empty,
empty,
empty,
details.fieldA,
details.extractA,
details.fieldB,
details.extractB,
details.outputToField,
details.outputConstructor,
details.fieldARequired,
details.fieldBRequired,
details.overrideOutputField,
details.caseSensitive
]));
}
});
});
}, this);

return results;
};

最佳答案

可以构建一个辅助函数来创建每个数组

function createRow(type, details) {
var len = 10, empty = '-', arr = Array(len);
// not sure if `empty` needed or not - simple loop here if so
switch (type) {
case 'CASES':
arr[0] = details.field;
break;
}
return arr;
}

使用

if (filter.type === 'UPPERCASE' || filter.type === 'LOWERCASE') {
details = filter.uppercaseDetails || filter.lowercaseDetails;
// call helper
var row = createRow('CASES', details);
// concat row
results.push(rowDefaults.concat(row));
}
if(filter.ty.......

关于Javascript - 在数组中插入占位符值以保持数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35027188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com