目前,我有一个数组(@id = "Price"
),其中包含将[1, 3]
的值更改为key
的索引
有没有什么好方法可以改进这段代码,所以我不必指定变量false
中显示的默认值?
这是因为默认的对象数组可能很大(下面的代码是我应用程序的一个简化问题..)
b
答案 0 :(得分:1)
“有没有什么好方法可以改进这段代码,所以我不必指定默认值,如变量b所示?这是因为默认的对象数组可能很大”< / EM> 强>
我对您的问题的解释如下:“我如何创建一个潜在的巨大对象数组,其中所有对象都默认为{key: true}
,除了,对于那些在另一个数组中指定的索引,应该是{key: false}
?“我假设你当时知道你想要多少个物体。
鉴于您为了问题的目的简化了事情,很难说什么是“最佳”。我怀疑可能有一个比你在b
中显示的更合适的数据结构,但没有关于你的真实代码的更多信息,我猜测没有意义。
因此,要创建一个对象数组,其中所有对象默认为相同的key
值,而不是可能的“巨大”数组文字,您只需使用循环:
const b = new Array(desiredNumberOfObjects)
for (let i = 0; i < b.length; i++)
b[i] = { key: true }
...然后运行现有的[1, 3].forEach(...)
将所需的项目设置为false
。
这样会有相当的效率,因为它只会遍历主b
数组和例外数组。
答案 1 :(得分:0)
试试这个:
public static String cipher(String input2, Integer number) {
StringBuilder builder = new StringBuilder(input2.length());
int k = number;
int lowerBoundlc = 97;
int upperBoundlc = 122;
int lowerBounduc = 65;
int upperBounduc = 90;
for (int i = 0; i < input2.length(); i++) {
char c = input2.charAt(i);
int j = (int) c;
if ((lowerBoundlc <= j && j <= upperBoundlc) || (j == 45)) {
if (j == 45) {
builder.append((char) j);
} else {
int addk = j + k;
if (addk > upperBoundlc) {
int lowercase = addk % upperBoundlc;
int resultlc = lowerBoundlc + lowercase -1;
builder.append((char) resultlc);
} else {
builder.append((char) addk);
}
}
} else {
if ((lowerBounduc <= j && j <= upperBounduc) || (j == 45)) {
int addnewk = j + k;
if (addnewk > upperBounduc) {
int uppercase = addnewk % upperBounduc;
int resultuc = lowerBounduc + uppercase -1;
builder.append((char) resultuc);
} else {
builder.append((char) addnewk);
}
}
}
}
return builder.toString();
}
并非未定义其间的值。如果这是一个问题,我建议使用函数检查值,如下所示:
//Specify default value
const b = [];
[1, 3].forEach((x) => {
if (b[x]) {
b[x].key = false;
} else {
b[x] = { key: false };
}
})
console.log(b);
答案 2 :(得分:0)
你需要知道数组应该有多大。让我们说它是6.然后你可以用Array.from
和before_insert_rows(self, rows, **kwargs)
参数初始化数组:
mapFn
&#13;
您可能想要使用const b = Array.from(Array(6), () => ({key: true}));
[1, 3].forEach(x => b[x].key = false);
console.log(b);
:
fill
但这不会按预期工作,因为相同的对象将放置在数组中的每个位置。
答案 3 :(得分:0)
您可以存储属性名称以设置变量;使用Array.prototype.entries()
在for..of
循环处迭代数组的索引和值,将对象的property的值设置为Boolean
,在索引数组上调用.indexOf()
的返回值。
const arr = [
{ a: 1 },
{ b: 2 },
{ c: 3 },
{ d: 4 },
{ e: 5 }
];
let [indexes, prop] = [[1, 3], `key`];
for (let [key, value] of arr.entries()) value[prop] = indexes.indexOf(key) > -1;
console.log(arr);
&#13;