javascript - 在javascript中读取数组的数据对象

标签 javascript ajax json

我有来自服务器的这个 json 数据

{

"store":[{"skey":"asdsad123das","name":"Store1"},  {"skey":"3308d976d2647659f130d09593be845a","name":"joji store"}],

"manager":[{"mkey":"asdsad123das","name":"manager 1"},{"mkey":"asdsad123da2","name":"Manager 2"},{"mkey":"asdsad123da3","name":"Manager 3"}]

}

我想读取那个数据。当我尝试阅读它时,它总是给我不明确的感觉。我正在做这样的事情

 success: function(msg){

            //alert(msg['store'].name);
            for (var keys in msg)
            {
                    //alert(keys);
                    alert(keys['name']);
                    for (var data in keys)
                    {
                            alert(data);

                    }
            }
      },

最佳答案

一般来说,当您有一个带有命名键(从 JSON 数据或其他地方获得)的对象时,您可能不想迭代这些键。您更有可能希望通过名称专门引用这些键。毕竟,storemanager 完全不同,不是吗?

在大多数情况下,编写一个循环(或类似的 $.each())并没有多大意义,您可以在其中遍历商店和经理并对它们执行相同的操作.您可能想对商店做一件事,而对经理做另一件事。

OTOH,根据您在此处的特定数据,商店记录看起来确实很像经理记录。每个人都有一个名字;区别在于商店有一个skey,而经理有一个mkey。因此,仅出于记录数据的目的,您可以执行以下操作 (fiddle):

var data = {
    "store": [
        { "skey": "asdsad123das", "name": "Store1" },
        { "skey": "3308d976d264", "name": "joji store" }
    ],
    "manager":[
        { "mkey":"asdsad123das", "name":"manager 1" },
        { "mkey":"asdsad123da2", "name":"Manager 2" },
        { "mkey":"asdsad123da3", "name":"Manager 3" }
    ]
};

function success( data ) {
    list( data.store, 'skey' );
    console.log( ' ' );
    list( data.manager, 'mkey' );
    function list( array, key ) {
        $.each( array, function( i, item ) {
            console.log( item[key], ':', item.name );
        });
    }
}

success( data );

请注意,我们使用 data.storedata.manager 来访问两个单独的数组中的每一个。 (而且我称它为 data 而不是 msg 因为 msg 听起来像是“消息”的缩写,而这似乎不是消息任何一种。)

但是由于数组本身很相似,所以我使用了一个通用函数来记录它们中的每一个。该函数接受一个参数,告诉它是使用 skey 还是 mkey

在处理这些数据的实际代码中,您可能会发现您对 manager 所做的操作与您对 store 所做的操作有很大不同,以至于您不会他们之间甚至有这么多共同的代码。但是一旦您能够可靠地访问该数据,您就可以从那里弄清楚。

现在是最重要的提示:你知道如何在你最喜欢的浏览器中使用 JavaScript 调试器吗?我推荐内置于 Chrome 中的那个,但还有用于 Firefox 的 FireBug 和 Internet Explorer 中的内置调试器。

如果你在你的代码中添加一个debugger; 语句并在调试器打开的情况下加载你的页面,它将停止在该行代码上,然后你可以查看 locals/中的变量观看面板,您可以使用控制台尝试不同的表达式以查看它们的作用。您还可以单步执行代码、单步执行函数等。您将不再需要使用 alert();您会发现这是调试代码的一种更好的方法。

这里是 information on the Chrome developer tools .如果你以前没有使用过这些调试工具,你应该认真地停止你正在做的一切并熟悉它们。它将获得巨大返回。

关于javascript - 在javascript中读取数组的数据对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633559/

相关文章:

javascript - 从 run.schedule 获取 Controller 变量

javascript - 向样式表指定 'title' 属性不允许应用它?

jquery - ajax微调器开始停止不起作用

javascript - Javascript For 和数组的问题

javascript - TypeError : Object [object Object], [object Object] 没有找到方法

javascript - Highcharts 列适合/调整图表

java - Jersey REST 字符编码

javascript - eslint 中只有箭头函数?

javascript替换js文件中的字符串

jquery - 可以以某种方式更改回调函数名称吗?