我想在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);
感谢大家的帮助。
答案 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
}
]
});