Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript何时使用arrayobject vs objectarray?_Javascript_Arrays_Object - Fatal编程技术网

JavaScript何时使用arrayobject vs objectarray?

JavaScript何时使用arrayobject vs objectarray?,javascript,arrays,object,Javascript,Arrays,Object,我很困惑什么时候应该声明数组中的对象/对象中的数组 数组中的对象 var data = [{'Name': Alex,'Value': 2}] 对象内的数组 var data = {interest:['a','b','c'], name:['Ali','Baba','Alan']} 有人能解释一下吗?提前感谢这两种表述都是有效的,但您应该根据以后对这些数据的处理情况选择一种表述。你应该问问自己:什么样的操作更频繁:添加/删除还是读取/查找?这个问题的答案可能会帮助你做出选择 使用对象数组可

我很困惑什么时候应该声明数组中的对象/对象中的数组

数组中的对象

var data = [{'Name': Alex,'Value': 2}]
对象内的数组

var data = {interest:['a','b','c'], name:['Ali','Baba','Alan']}

有人能解释一下吗?提前感谢

这两种表述都是有效的,但您应该根据以后对这些数据的处理情况选择一种表述。你应该问问自己:什么样的操作更频繁:添加/删除还是读取/查找?这个问题的答案可能会帮助你做出选择

使用对象数组可以更容易地添加/删除实体,这可以作为单个原子操作来完成。考虑以下情况:

var arr = [{x: 'a', y: 1}, {x: 'b', y: 2}];
arr.push({x: 'c', y: 3}); // add new to the end
var obj = arr.shift(); // remove first element of array and assign it to variable
对于数组对象,您需要分别删除x和y:

var obj = {x: ['a', 'b'], y: [1, 2]};
// add
obj.x.push('c');
obj.y.push(3);
// remove
obj.x.shift();
obj.y.shift();
然而,当您有很多空值时,数组的对象可能具有更紧凑的表示形式:通过网络发送的比特数更少,查找像min/max这样的内容的迭代次数更少

var arr = [
  {x: 'a'},
  {y: 1},
  {y: 2},
  {y: 3},
  {y: 4},
  {y: 5},
  {x: 'b', y: 6}
];

// Find max of x
var maxX = arr.reduce(function(max, obj) { // 7 iterations
  return obj.x > max ? obj.x : max;
}, '')
与数组的对象相同:

// more compact
var obj = {
  x: ['a', 'b'],
  y: [1, 2, 3, 4, 5, 6]
}

// less iterations (only 2 in this case)
var maxX = obj.x.reduce(function(max, val) {
  return val > max ? val : max;
}, '')

这取决于你需要储存什么。数组在订购东西时很好。当您想要直接访问属性时,对象是好的。例如:[{name:'foo'},{name:'bar'}]不是一个好主意,因为在数组中查找对象是打开的,如果需要对象数组或具有数组属性的对象,则不需要打开顺序hereDepends:pIts类似于何时在表中使用bulletpoints而不是在bulletpoints下的表中使用bulletpoints