var data = [
{
infoType: [
[1],
[2],
[3],
]
},
{
infoType: [
[4],
[5],
[6],
]
},
{
infoType: [
[7],
[7],
[8],
]
},
{
infoType: [
[9],
[10],
[11],
]
}
]
伙计们,我有这些数据里面有几个对象,在这个对象里面我有一个字段'infoType',我正在尝试打印所有值,但我没有得到。
我该怎么做?
我是这样想的:
for(var i = 0; i < data.length; i++) {
data[i].infoType.forEach(function(item) {
console.log(item);
})
}
for(var i = 0; i < data.length; i++) {
for(var j = 0; i < data[i].infoType.length; i++) {
console.log(data[i].infoType[j]);
}
}
我不能使用jquery。
答案 0 :(得分:1)
我在数组中的数组之前完成了这个解决方案。但是在谷歌地图标记的c#侧
str.Append("<script type='text/javascript'>");
str.Append("var _arrSitesLatLang = new Array();");
StationsDataDB objSitesDB = new StationsDataDB();
DataTable dt = objSitesDB.GetBySitesIdAndDates(Request.QueryString["SId"], Request.QueryString["date"], Request.QueryString["Q"]);
for (int i = 0; i < dt.Rows.Count; i++)
{
str.Append("var arr = new Array();");
str.Append("arr.push('" + dt.Rows[i]["Station"].ToString() + "');");
string[] latlang = null;
if (!string.IsNullOrEmpty(dt.Rows[i]["LatLang"].ToString()))
{
latlang = dt.Rows[i]["LatLang"].ToString().Trim().Split(',');
str.Append("arr.push(" + latlang[0] + ");");
str.Append("arr.push(" + latlang[1] + ");");
}
str.Append("_arrSitesLatLang.push(arr);");
}
并在客户端
var markers = _arrSitesLatLang;
for (i = 0; i < markers.length; i++) {
var position = new google.maps.LatLng(markers[i][1], markers[i][2]);
bounds.extend(position);
marker = new google.maps.Marker({
position: position,
map: map,
title: markers[i][0]
});
// Allow each marker to have an info window
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function () {
infoWindow.setContent(infoWindowContent[i][0]);
infoWindow.open(map, marker);
}
})(marker, i));
// Automatically center the map fitting all markers on the screen
map.fitBounds(bounds);
}
我的数组返回数据,例如_arrSitesLatLang = [[1,1],[1,2]]例如。
此类工作还有另一种解决方案
如果使用数组main并在此数组中推送对象及其属性。喜欢
$.grep function
答案 1 :(得分:0)
您可以使用此代码段来展平您的结构:
function getValues(root, vals) {
if (root instanceof Array){
for (var i = 0; i < root.length;i++){
if (typeof root[i] == 'object')
getValues(root[i], vals);
else
vals.push(root[i]);
}
return;
}
for (var key in root){
getValues(root[key], vals);
}
}
var data = [
{
infoType: [
[1],
[2],
[3],
]
},
{
infoType: [
[4],
[5],
[6],
]
},
{
infoType: [
[7],
[7],
[8],
]
},
{
infoType: [
[9],
[10],
[11],
]
}
];
var vals = [];
getValues(data, vals);
console.log(vals);
在结构平坦后,您只需将vals变量作为一个简单的数组:
for (var i = 0; i< vals.length; i++){
console.log(vals[i]);
}
答案 2 :(得分:0)
要打印上述结构中的所有值,并且假设没有引入其他结构,您可以执行以下操作:
for (var i = 0; i < data.length; i++) {
var obj = data[i].infoType;
for (var j =0; j < obj.length; j++) {
console.log(obj[j][0]);
}
}
答案 3 :(得分:0)
您需要执行item[0]
,因为item
也是长度为1
的数组。
for(var i = 0; i < data.length; i++) {
data[i].infoType.forEach(function(item) {
console.log(item[0]);
})
}
工作Fiddle