我试图找出如何替换值1,2和3 在这个GUI界面中,一系列数字基于数组中有多少个对象,因此它可以动态地跟踪它,而不必在每次更新数组时对其进行硬核处理。
阻止我简单地使用带数字的数组的原因是每个数字都是这个GUI内部的对象。 代码行是这样的。
gui.add(data, 'system', {
"1": 0,
"2": 1,
"3": 2
})
假设我正在使用任何包含任何随机信息的随机数组,如下所示:
var arr = [];
for (var i = 0; i<51;i++){
arr.push("element");}
这个数组中有51个元素,我想要的是上面包含这些元素的数组用于输出数字&#34; 1&#34;,&#34; 2&#34; ,&#34; 3&#34;,&#34; 4&#34;,&#34; 5&#34;,&#34; 6&#34; (除了10,同时仍然有1个剩余),GUI界面没有打破我。我希望将它除以10的原因是因为我不希望有51个元素可点击,而是6个因为它更易于管理。
我应该做什么或调查什么?谢谢。我的代码的小提琴就是这个。 FIDDLE
编辑:这是一个相对困难的问题,所以我会尝试更清楚。我在这个对象中有数字值1,2,3硬编码:
gui.add(data, 'system', {
"1": 0,
"2": 1,
"3": 2
}).name('system #').onChange(function(value) {
updateSets(value);
});
但我想要实现的目标是,我不需要写入&#34; 1&#34;,&#34; 2&#34;,&#34; 3&#34;但它看起来是一个数组的长度(如果它包含3个元素),它会将它们写入对象中。但是如果一个数组有51个元素,我不希望在系统对象下有51个数字,但它将它除以10,这样我就有6.不是5,因为我有1个剩余。
答案 0 :(得分:1)
您可以使用Array.prototype.reduce()
创建一个具有相同数量的属性和值的对象到数组的.length
。
创建一个普通对象。利用Object.entries()
,for..of
循环来设置属性,对象的值直到变量n
。
您可以使用Array.prototype.slice()
从最初创建的对象中获取n
到x
个值的属性。
var arr = [];
for (var i = 0; i < 51; i++) {
arr.push("element");
}
var obj = arr.reduce(function(obj, element, index) {
obj[index + 1] = index;
return obj
}, {});
function getObjProps(from, to, obj, res) {
let it = void 0;
if (from) {
it = Object.entries(obj).slice(from, to);
} else {
it = Object.entries(obj);
}
for (let [key, value] of it) {
if (+key <= to) {
res[key] = value;
} else {
break;
}
};
return res
}
var curr = getObjProps(null, 6, obj, {});
console.log(curr);
var next = getObjProps(6, 12, obj, {});
console.log(next);
for (let i = 12; i < arr.length; i += 6) {
console.log(getObjProps(i, i + 6, obj, {}))
}