javascript - 创建javascript对象

标签 javascript object

我有这个功能

// add history paths and save data
function AddPath( strTag, strUserName, arrayLatLngPoints, pathColour) {

  for (var i = 0; i < arrayLatLngPoints.length; i++)
    {
    var point = arrayLatLngPoints[i];
    var date = new Date( parseInt( point.timestamp));
    addMarkers(point.timestamp, point.lat, point.lng, point.timestamp, strUserName, pathColour, date.toString());
    date = null; 
    }
}

除了使用 addMarkers() 添加标记外,我还想将纬度、经度和时间戳存储在一个对象中。

我在想最好的存储方式应该是这样的

{ strUserName : { timestamp : point.timestamp , LatLng : point.LatLng }, strUserName : { timestamp : point.timestamp , LatLng : point.LatLng } }

{ strUserName : { timestamp : point.timestamp , LatLng : { lat : point.lat, lng : point.lng } }, ..

如何创建这个对象?

更新:

感谢您的回复。 我试过以下..

// add history paths and save data
function AddPath( strTag, strUserName, arrayLatLngPoints, pathColour) {

  for (var i = 0; i < arrayLatLngPoints.length; i++)
    {
    var point = arrayLatLngPoints[i];
    var pos = new google.maps.LatLng(point.lat, point.lng);

    var history = {
        strUserName : {
            timestamp : point.timestamp ,
            LatLng : pos
        }
    };

    var date = new Date( parseInt( point.timestamp));
    addMarkers(point.timestamp, point.lat, point.lng, point.timestamp, strUserName, pathColour, date.toString());
    date = null; 
    }
console.log(history);
}

查看控制台截图 screenshot

用户名无效,我没有得到每个时间戳的项目,它只是覆盖了一个条目?

最佳答案

How can i create this object?

和你做的差不多:

var obj = { strUserName : { timestamp : point.timestamp , LatLng : point.LatLng }, strUserName : { timestamp : point.timestamp , LatLng : point.LatLng } };

或者更易读:

var obj = {
    strUserName : {
        timestamp : point.timestamp ,
        LatLng : point.LatLng
    },
    strUserName : {
        timestamp : point.timestamp ,
        LatLng : point.LatLng
    }
};

那是一个 object initializer .它创建一个具有给定属性的新对象(实际上是三个新对象)并返回对它们最外层的引用。

举一些简单的例子:

// Create a blank object (an object with no properties of its own):
var a = {};

// Create an object with a `name` property with the value "Fred"
var b = {name: "Fred"};

// Create an object with a `foo` property, which is *another* freshly-created
// object with a `name` property with the value "Barney"
var c = {
    foo: {
        name: "Barney"
    }
};

关于您更新的问题:

the username has not worked and im not getting an item for each timestamp, its just overwriting the one entry?

当然是这样,您将在每个循环中覆盖 history,而不会在任何地方存储较早的副本。例如,您可以将它们存储在一个数组中:

// add history paths and save data
function AddPath( strTag, strUserName, arrayLatLngPoints, pathColour) {

  var historyArray = [];
  for (var i = 0; i < arrayLatLngPoints.length; i++)
    {
    var point = arrayLatLngPoints[i];
    var pos = new google.maps.LatLng(point.lat, point.lng);

    historyArray[i] = {
        strUserName : {
            timestamp : point.timestamp ,
            LatLng : pos
        }
    };

    var date = new Date( parseInt( point.timestamp));
    addMarkers(point.timestamp, point.lat, point.lng, point.timestamp, strUserName, pathColour, date.toString());
    date = null; 
    }
console.log(historyArray);
}

关于javascript - 创建javascript对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11308981/

相关文章:

javascript - 从interval到requestAnimationFrame

javascript - jqplot 个人点标签

javascript - 如何在 promise 数组中引用对象值?

java |找不到符号 |返回一个对象

javascript - 通过指令范围传递对象不起作用

javascript - Handlebars 模板无法处理来自 Backbone 的 JSON

javascript - 为什么我的 this.class 总是未使用 jQuery 过滤器定义?

vue.js - Vue 键不会从对象中删除

c++ - Qt:在运行时从 C++ 代码创建 QML 组件时未启动 onChildrenChanged

javascript - Python 和 Javascript 之间的 XMLHTTPRequest