gpt4 book ai didi

javascript - 多维数组与对象数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:13:31 24 4
gpt4 key购买 nike

我正在构建一个运行基于代理的模型的房地产市场模拟,我想跟踪每笔交易,以便我可以使用数据创建图表和统计数据。我正在考虑通过使用一种我将称为 Transaction 的对象来实现:

var Transaction = function(house, askingPrice, soldPrice, daysOnMarket) {
this.date = gameDate
this.house = house
this.askingPrice = askingPrice
this.soldPrice = soldPrice
this.daysOnMarket = daysOnMarket
};

每次交易都会触发创建一个新的Transaction对象实例并被推送到transArray:

transArray.push (new Transaction(house, askingPrice, soldPrice, daysOnMarket));

这是为我陈述的目的积累和存储这些数据的最佳方式,还是使用二维数组更好,其中 y 是 date,x 是 house, askingPrice, soldPrice, daysOnMarket?您认为每种方法的优点和缺点是什么?

最佳答案

您可能会使用一组对象,这样我就可以使用熟悉的动词函数来操作它们;就像查找一样。可能有更多“纯”Javascript 方法来执行其中的一些操作,但我还测试了 lookup 的速度,这种形式的效果不错。

这是从另一个答案复制而来的,这里有一个更复杂的例子:Binding an array of objects to their specific form fields for updating/deleting

请注意那个,例如 hasDuplicates 函数 - 这样您就可以轻松地在您的对象数组上支持它 - 如果您有多个对象数组,您可以在每个对象数组上重复使用这些函数一个。

var myApp = myApp || {};
myApp.arrayObj = {
indexOf: function(myArray, searchTerm, property) {
for (var i = 0; i < myArray.length; i++) {
if (myArray[i][property] === searchTerm) return i;
}
return -1;
},
indexAllOf: function(myArray, searchTerm, property) {
var ai = [];
for (var i = 0; i < myArray.length; i++) {
if (myArray[i][property] === searchTerm) ai.push(i);
}
return ai;
},
lookup: function(myArray, searchTerm, property, firstOnly) {
var found = [];
var i = myArray.length;
while (i--) {
if (myArray[i][property] === searchTerm) {
found.push(myArray[i]);
if (firstOnly) break; //if only the first
}
}
return found;
},
lookupAll: function(myArray, searchTerm, property) {
return this.lookup(myArray, searchTerm, property, false);
},
remove: function(myArray, searchTerm, property, firstOnly) {
for (var i = myArray.length - 1; i >= 0; i--) {
if (myArray[i][property] === searchTerm) {
myArray.splice(i, 1);
if (firstOnly) break; //if only the first term has to be removed
}
}
},
removeByIndex: function(myArray, index) {
myArray.splice(index, 1);
}
};

关于javascript - 多维数组与对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38755215/

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