我必须使用一些数据制作这个addRows方法,这需要按照构造。
data.addRows([
['UK', 10700,100],
['USA', -15400,1]
]);
但是我只有这样的数据来了,我怎么能用上面的方法呢?
var custom = new Array();
success : function(msg)
{
/* Make this structure
[
['UK', 10700,100],
['USA', -15400,1]
]
*/
var total = parseInt(msg.total);
for(i=0; i < total; i++ ) {
custom[0][i][0] = msg.rows[i].land;
custom[0][i][1] = msg.rows[i].id;
custom[0][i][2] = msg.rows[i].id;
}
}
data.addRows(custom); // does not work
错误:(尝试了3个示例全部返回相同)
Uncaught TypeError: Cannot call method 'toString' of null
Uncaught TypeError: Cannot read property 'land' of undefined
答案 0 :(得分:3)
splice
方法可用于将元素添加到数组
var arr = ["a", "b"];
var newItems = ["c", "d", "e"];
[].splice.apply(arr, [arr.length, 0].concat(newItems));
console.log(arr.join()); //a,b,c,d,e
console.log(arr.length); //5
或者你可以在Array的原型中添加这样的东西:
Array.prototype.addRows = function(arr) {
var self = this;
arr.forEach(function(val) {
self.push(val);
});
}
var arr = ["a", "b"];
arr.addRows(["c", "d", "e"]);
for (var i = 0; i < arr.length; i++)
console.log(arr[i]);
答案 1 :(得分:1)
您可以使用此方法 http://www.w3schools.com/jsref/jsref_concat_array.asp
最初假设
data = [
['UK', 10700,100],
['USA', -15400,1]
] ;
成功处理程序,
success : function(msg)
{
/* Make this structure
[
['UK', 10700,100],
['USA', -15400,1]
]
*/
var custom = [];
var total = parseInt(msg.total);
for(i=0; i < total; i++ ) {
custom[i] = [msg.rows[i].land, msg.rows[i].id1, msg.rows[i].id2];
}
data = data.concat(custom);
}
答案 2 :(得分:1)
尝试使用push
方法:
// `[]` is the same as `new Array`, but slightly faster
var custom = [];
var success = function(msg)
{
var total = parseInt(msg.total);
for(i=0; i < total; i++ ) {
var msgRow = msg.rows[i];
var customRow = [msgRow.land, msgRow.id, msgRow.id];
// The push method adds a new row to your array
custom.push(msgRow);
}
};
data.addRows(custom);