何时使用对象以及何时使用数组
When to use object and when array
我有一个情况,我有 3 个不同的数组,其中的对象数量非常不同。我已经阅读了许多关于此的问题和博客文章,但我仍然不确定何时使用什么。
嗡!我最大的问题是我需要迭代和推送(非常适合数组),还要查找数组中是否存在并删除(更适合对象)。不需要特定订单。
我不允许在array1
和array1clicked
中使用相同的对象因为他们应该执行不同的操作。
在我的示例中,什么时候最好使用对象和何时使用数组?我应该用对象替换什么,什么应该保留为数组?我很确定其中的对象数量也很重要,对吧?
我当前的代码:
//Objects in arrays are literally custom {objects} with custom prototypes and html
var array1 = [ 20 objects ];
var array1clicked = [];
var array2 = [ 250 objects ];
var array2clicked = [];
var array3 = [ 50 000 objects ];
var array3clicked = [];
//Each object in arrays has event attached
objecthtml.click(function() {
//Add to clicked array
array1clicked.push(thisobject);
//Remove from initial array
var index = array1.indexOf(thisobject);
if (index > -1) {
array1.splice(index, 1);
}
}
//Same with array2 and array3 objects
//Iterations on different conditions
var array1count = array1.length;
var array1clickedcount = array1clicked.length;
//Same with array2 and array3
if(condition1) {
for(a = 0; a < array1count; a++) {
array1[a].div.style.visibility = 'hidden';
}
//Same with array2 and array3 objects
for(a = 0; a < array1clickedcount; a++) {
array1clicked[a].div.style.visibility = 'visible';
}
//Same with array2clicked and array3clicked objects
}
else if(condition2) {
for(a = 0; a < array1count; a++) {
array1[a].div.style.visibility = 'visible';
}
//Same with array2 and array3 objects
for(a = 0; a < array1clickedcount; a++) {
array1clicked[a].div.style.visibility = 'hidden';
}
//Same with array2clicked and array3clicked objects
}
您似乎需要一个具有以下操作的数据结构:
- 迭 代
- 插入
- 删除
- 搜索
对于数组,问题在于搜索和删除(使用重新索引)很慢。
对于对象,问题是属性名称只能是字符串。
完美的结构是一套。
var s = new Set();
s.add(123); // insert
s.has(123); // search
s.delete(123); // delete
s.values(); // iterator
就您而言,我认为您只需要使用数组。
在通常情况下,您可以使用 object 来保留引用并将一些值推送到其中,但如果你想迭代这个,我认为你必须使用 Array。
相关文章:
- 我如何才能使数组中的按钮只对其作出响应'使用javascript的自己的包装器
- 使数组对象都具有相同的键
- 谷歌地图API v3动态标记,帮助使数组工作
- 如何使数组中的每个列表项都可单击
- 何时使用对象以及何时使用数组
- 何时使用数组以及何时使用对象
- 我怎样才能使数组一次显示一个延迟
- 如何使数组输出使用A面文本而不是B面文本
- 为什么给数组赋值会使数组对象变成nan
- jquery函数使数组与相同的元素相交
- 我需要在jquery帮助,使数组的项目名称
- 试图从数组中删除一个元素并使数组“刷新”.在网页上使用Javascript
- 将多个对象合并为一个对象,使数组具有相同的属性值
- 我怎样才能使数组中的一个值一旦被使用,它就不能再次被使用,直到数组完成
- 如何使用for循环使数组中的字符串变为复数
- 如何使数组名称成为对象中的变量
- 知道何时使用数组表示法将属性设置为对象
- 如何使数组中收集的循环值在循环之外可用以供将来使用
- 在JavaScript中使数组变量全局化
- AJAX使数组全局