【问题标题】:How to push data to JavaScript Object Literal如何将数据推送到 JavaScript Object Literal
【发布时间】:2015-01-04 18:52:34
【问题描述】:

我想在 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);

感谢大家的帮助。

【问题讨论】:

  • umm 与问题无关,但您为什么不创建一个临时变量并将weatherData.query.results.weather.rss.channel.item 存储在其中?将更具可读性。
  • 由于这个问题与 JSON 完全没有关系,我已经删除了 json 标签。

标签: javascript angularjs javascript-objects


【解决方案1】:

您的第二行代码用普通对象覆盖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
        }
    ]
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 2021-09-08
    • 2022-11-10
    • 1970-01-01
    • 2022-11-06
    • 1970-01-01
    相关资源
    最近更新 更多