arr [0]的结果.price在函数外部是'undefined'。为什么变量arr在函数外部定义并且数据被推送到它时不可用?
var arr = [];
function get_data() {
$.ajax({
url: 'http://bitcoinprice.co.uk/site-options/',
dataType: 'json',
success: function(data) {
var price = data['gbp_price'];
var abs_change = data['gbp_abs_change'];
var p_change = data['gbp_change'];
var market_cap = data['gbp_market_cap'];
var today_max = data['gbp_today_max'];
var today_min = data['gbp_today_min'];
var obj = {
'price' : 50,
'abs_change' : abs_change,
'p_change' : p_change,
'market_cap' : market_cap,
'max' : today_max,
'min' : today_min
};
arr.push(obj);
console.log(arr[0].price); // 50
}
});
}
get_data();
console.log(arr[0].price) // Uncaught TypeError: Cannot read property 'price' of undefined(…)
我似乎无法找到答案。我试图从函数get_data()之外的关键'price'获取值。
我确信我在这里缺少一些简单的东西。
答案 0 :(得分:4)
您需要使用price
,因为var o = {'price':price};
o.price; // 50
arr.push(o);
arr[0] === o; // true
属性不是在数组上定义的,而是在对象上定义的,这是数组中的第一个条目。
您可以像这样重写代码来演示正在发生的事情:
arr.price = price;
您必须这样做才能将属性实际分配给数组:
pasa.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//Starting a new Intent
Intent nextScreen = new Intent(getApplicationContext(), semis.class);
//Sending data to another Activity
nextScreen.putExtra("semss", sems.toString());
startActivity(nextScreen);
finish(); // this is the last statement ever
}
});
答案 1 :(得分:0)
只是另一种选择
var price = 50,
arr = [];
arr.price = price;
console.log(arr.price+'<br>'+arr['price']); // both return 50
答案 2 :(得分:0)
var arr是对象数组。你只需要在数组中循环以获得价值。
var price = 50;
var arr = [];
var obj = {
'price' : price
}
arr.push(obj);
for(var i of arr)
{
console.log(i['price']); //50
}