gpt4 book ai didi

JavaScript 何时使用数组对象与对象数组?

转载 作者:行者123 更新时间:2023-12-03 02:52:16 25 4
gpt4 key购买 nike

我很困惑什么时候应该在数组内声明对象/在对象内声明数组。

数组中的对象

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

对于数组对象,您需要分别删除 xy:

var obj = {x: ['a', 'b'], y: [1, 2]};
// add
obj.x.push('c');
obj.y.push(3);
// remove
obj.x.shift();
obj.y.shift();

但是,当您有很多空值时,数组对象可能具有更紧凑的表示形式(阅读:通过网络发送的字节数更少)和查找某些内容的迭代次数更少(例如最小/最大)。

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;
}, '')

关于JavaScript 何时使用数组对象与对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47795769/

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