twn*_*ale 7 javascript python namedtuple
我如何在javascript中实现python的namedtuple?理想情况下,我还需要一个函数,我可以"映射"一系列序列,将其转换为一系列类似于命名的对象.
// with underscore.js included...
var points = [[1,2], [3,4], [4,5]
var Point = namedlist('Point', 'x y')
points = _.map(Point._make, points)
point1 = points[0]
var x = point1.x
var y = point1.y
Run Code Online (Sandbox Code Playgroud)
请注意,我不希望每次都要编写像"Point"这样的新类,而是希望一个工厂函数生成一个支持列表项访问的新类,并使用给定的字段名称.
旁注:这个问题的基础假设是javascript地图使用较少的内存列表.这个假设合理吗?
你可以使用类似的东西
var namedlist = function(fields) {
return function(arr) {
var obj = { };
for(var i = 0; i < arr.length; i++) {
obj[fields[i]] = arr[i];
}
return obj;
};
};
//use:
var points = [[1,2], [3,4], [5,6]];
var Point = namedlist(['x', 'y']);
points = _.map(Point, points);
//Single item:
var pt = Point([1,2]);
Run Code Online (Sandbox Code Playgroud)
至于内存使用情况,它取决于底层JS引擎如何实现每个构造.我怀疑一个数组会比一个对象消耗更少的内存,但简单对象(如此处)和数组之间的差异可能不是很大.