如何将数据推送到JavaScript Object Literal

时间:2015-01-04 18:52:35

标签: javascript angularjs javascript-objects

我想在JavaScript对象文字中推送数据。但是,无论如何都找不到。我正在尝试以下代码。

var wd = { item: [] }
wd.item = {
    country: weatherData.query.results.weather.rss.channel.location.country,
    state: weatherData.query.results.weather.rss.channel.location.city,
    displayState: weatherData.query.results.weather.rss.channel.location.city + ', ' + weatherData.query.results.weather.rss.channel.location.country,
    data: [
    {
        date: weatherData.query.results.weather.rss.channel.item.forecast[0].date,
        day: weatherData.query.results.weather.rss.channel.item.forecast[0].day,
        high: weatherData.query.results.weather.rss.channel.item.forecast[0].high,
        low: weatherData.query.results.weather.rss.channel.item.forecast[0].low,
        text: weatherData.query.results.weather.rss.channel.item.forecast[0].text
    }
    ]
};

我正在尝试使用push()函数,但是我收到了错误。

添加一个项目后,结果如下。

 Object {item: Object}item: Objectcountry: "India"data: Array[1]0: Object$$hashKey: "object:254"date: "4 Jan 2015"day: "Sun"high: "84"low: "66"text: "Partly Cloudy"__proto__: Objectlength: 1__proto__: Array[0]displayState: "Bangalore, India"state: "Bangalore"__proto__: Object__proto__: Object

但是,之后我无法添加新数据。有人可以帮忙吗?

以下代码现在正在运作。

var wd = { item: [] };
var
                location = weatherData.query.results.weather.rss.channel.location,
                forecast = weatherData.query.results.weather.rss.channel.item.forecast[0];

            wd.item.push({
                country: location.country,
                state: location.city,
                displayState: location.city + ', ' + location.country,
                data: {
                    date: forecast.date,
                    day: forecast.day,
                    high: forecast.high,
                    low: forecast.low,
                    text: forecast.text
                }
            });
            console.log(wd);

感谢大家的帮助。

1 个答案:

答案 0 :(得分:3)

您的第二行代码使用普通对象覆盖wd.item处的数组。我假设您打算将对象添加到数组中。

wd.item.push({
  // your big object
});

正如@MightyPork所说,如果使用变量来保存目标嵌套对象,那么您的代码将更具可读性。

var wd = { item: [] };
var loc = weatherData.query.results.weather.rss.channel.location;
var forecast = weatherData.query.results.weather.rss.channel.item.forecast;

wd.item.push({
    country: loc.country,
    state: loc.city,
    displayState: loc.city + ', ' + loc.country,
    data: [
        {
            date: forecast[0].date,
            day:  forecast[0].day,
            high:  forecast[0].high,
            low:  forecast[0].low,
            text:  forecast[0].text
        }
    ]
});