如何在数组中打印值 在数组中,在多个对象内

How print values in arrays in array, inside multiple objects

本文关键字:数组 对象 打印      更新时间:2024-01-12
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。

我已经在数组中的数组之前完成了这个解决方案。 但在 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 
你需要

item[0] item因为也是一个长度1数组

for(var i = 0; i < data.length; i++) {
    data[i].infoType.forEach(function(item) {
      console.log(item[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]);
}

要打印上述结构中的所有值,并假设没有引入其他结构,您可以执行以下操作:

小提琴

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]);
    }
}

这也很有帮助...要打印值...

data.map( a => a.infoType.map( b => b[0] ) ).flat()