Javascript 确定JSON对象的最后一个元素

Javascript 确定JSON对象的最后一个元素,javascript,ajax,Javascript,Ajax,我的服务器(PHP)响应JSON对象,如以下数据: { "0": { "action_id": "80", "action_transaction_id": "5743", "action_matched_email": "test_1@gmail.com", "action_by_user": "user1", "action_count": "0", "action_date": "20

我的服务器(PHP)响应JSON对象,如以下数据:

{

    "0": {
        "action_id": "80",
        "action_transaction_id": "5743",
        "action_matched_email": "test_1@gmail.com",
        "action_by_user": "user1",
        "action_count": "0",
        "action_date": "2017-07-19 15:01:26"
    },
    "1": {
        "action_id": "1",
        "action_transaction_id": "1",
        "action_matched_email": "Admin@email.com",
        "action_by_user": "ADMIN",
        "action_count": "4",
        "action_date": "2017-07-19 15:10:08"
    },
    "new_count": {
        "action_count": "4"
    }
}
数据不受限制,有时服务器抛出许多数据。这取决于情况如何

这是我在成功后所做的:

success: function(data, status, jqXHR) {

   $.each(data, function(i, row) {


document.getElementById("hidden_counter").value = "";//new_count value here

   var allRows =window.parent.document.getElementsByClassName('row'+row.action_transaction_id+'');

   for (var i = 0; i < allRows.length; i++) {
       allRows[i].style.backgroundColor = '#008e00';
       allRows[i].style.color = '#f0fff0'; 
       //should exclude the last array when updating the bgcolor and style color of the row   
    }
  });
}
success:函数(数据、状态、jqXHR){
$。每个(数据、函数(i、行){
document.getElementById(“隐藏的_计数器”).value=”“;//此处为新的_计数值
var allRows=window.parent.document.getElementsByClassName('row'+row.action\u transaction\u id+'');
对于(var i=0;i
我有两件事要知道和做

  • 我怎样才能得到最后一个物体

    “新计数”:{
    “操作计数”:“4”
    }

  • 这样我就可以更新它的隐藏输入值

  • 更新行样式时,如何排除最后一个对象

  • 如果您的对象名为lets say
    jsondata
    ,那么对于accesing
    new\u count
    ,您可以使用

    jsondata.new_count
    
    如果要访问最后一个元素,则可以通过

    jsondata.new_count.action_count
    

    如果您的对象名为lets say
    jsondata
    ,那么对于accesing
    new\u count
    ,您可以使用

    jsondata.new_count
    
    如果要访问最后一个元素,则可以通过

    jsondata.new_count.action_count
    

    第一件:获取索引最大的元素(=长度-1)

    第二:循环从索引0到索引
    var lastArrayElement = allRows[allRows.length - 1];
    var action_count = lastArrayElement.action_count;
    
    // loop all but last element:
    for(var i=0; i<allRows.length-1;i++){ 
       do_something(allRows[i]); //custom function
    }
    
    var lastArrayElement=allRows[allRows.length-1];
    var action\u count=lastArrayElement.action\u count;
    //循环除最后一个元素外的所有元素:
    对于(变量i=0;i最大值){
    max=对象键(所有行)[i];
    }
    }
    
    最后一个元素将在
    var lastArrayElement=allRows[max]

    第一部分:获取索引最大的元素(=长度-1)

    第二:循环从索引0到索引
    var lastArrayElement = allRows[allRows.length - 1];
    var action_count = lastArrayElement.action_count;
    
    // loop all but last element:
    for(var i=0; i<allRows.length-1;i++){ 
       do_something(allRows[i]); //custom function
    }
    
    var lastArrayElement=allRows[allRows.length-1];
    var action\u count=lastArrayElement.action\u count;
    //循环除最后一个元素外的所有元素:
    对于(变量i=0;i最大值){
    max=对象键(所有行)[i];
    }
    }
    
    最后一个元素将在
    var lastArrayElement=allRows[max]

    您可以使用

    请注意,对于较旧的浏览器,您可能需要使用该链接中包含的polyfill。

    您可以使用

    请注意,对于较旧的浏览器,您可能需要使用该链接中包含的polyfill

    我怎样才能得到最后一个物体

    对象键不会排序,而是按照特定于浏览器的顺序检索。所以你可以试着做的是,得到一系列的键,然后取最大值

    如前所述,这应该可以做到:

    var lastIndex = Math.max.apply(null, Object.keys(object).map(Number))
    

    更新行样式时,如何排除最后一个对象

    您可以在
    长度-1处停止循环

    或者您可以尝试使用CSS选择器:

    var选择器='.row'+row.action_transaction_id+':not(:last child)';
    var allRows=window.parent.document.querySelectorAll(选择器);
    //或者因为您使用的是jQuery
    var allRows=$(窗口).parent().find(选择器)
    //或
    var选择器='.row'+row.action_事务_id;
    var allRows=$(窗口).parent().find(选择器).not(“:最后一个子项”)
    
    我怎样才能得到最后一个物体

    对象键不会排序,而是按照特定于浏览器的顺序检索。所以你可以试着做的是,得到一系列的键,然后取最大值

    如前所述,这应该可以做到:

    var lastIndex = Math.max.apply(null, Object.keys(object).map(Number))
    

    更新行样式时,如何排除最后一个对象

    您可以在
    长度-1处停止循环

    或者您可以尝试使用CSS选择器:

    var选择器='.row'+row.action_transaction_id+':not(:last child)';
    var allRows=window.parent.document.querySelectorAll(选择器);
    //或者因为您使用的是jQuery
    var allRows=$(窗口).parent().find(选择器)
    //或
    var选择器='.row'+row.action_事务_id;
    var allRows=$(窗口).parent().find(选择器).not(“:最后一个子项”)
    
    试试这个:

        $.each(data, function(i, row) {
                if(row["action_count"])
                {
                    document.getElementById("hidden_counter").value = row["action_count"];
                }
                else
                {
                    var allRows =window.parent.document.getElementsByClassName('row'+row.action_transaction_id+'');
                    for (var i = 0; i < allRows.length; i++) {
                        allRows[i].style.backgroundColor = '#008e00';
                        allRows[i].style.color = '#f0fff0'; 
                    }
                }
            });
    
    $。每个(数据、函数(i、行){
    如果(行[“操作计数”])
    {
    document.getElementById(“隐藏的计数器”).value=行[“操作计数”];
    }
    其他的
    {
    var allRows=window.parent.document.getElementsByClassName('row'+row.action\u transaction\u id+'');
    对于(var i=0;i
    试试这个:

        $.each(data, function(i, row) {
                if(row["action_count"])
                {
                    document.getElementById("hidden_counter").value = row["action_count"];
                }
                else
                {
                    var allRows =window.parent.document.getElementsByClassName('row'+row.action_transaction_id+'');
                    for (var i = 0; i < allRows.length; i++) {
                        allRows[i].style.backgroundColor = '#008e00';
                        allRows[i].style.color = '#f0fff0'; 
                    }
                }
            });
    
    $。每个(数据、函数(i、行){
    如果(行[“操作计数”])
    {
    document.getElementById(“隐藏的计数器”).value=行[“操作计数”];
    }
    其他的
    {
    var allRows=window.parent.document.getElementsByClassName('row'+row.action\u transaction\u id+'');
    对于(var i=0;i
    您不应该将纯js与jquery混为一谈:

    success: function(data, status, jqXHR) {
    
       $('#hidden_counter').val(data.new_count.action_count);
    
       $.each(data, function(i, row) {
    
         if (row.action_transaction_id === undefined) {
           return;
         }
    
         $('.row' + row.action_transaction_id).css({
             backgroundColor: '#008e00',
             color: '#f0fff0'
         });
      });
    }
    

    您不应该将纯js与jquery混为一谈:

    success: function(data, status, jqXHR) {
    
       $('#hidden_counter').val(data.new_count.action_count);
    
       $.each(data, function(i, row) {
    
         if (row.action_transaction_id === undefined) {
           return;
         }
    
         $('.row' + row.action_transaction_id).css({
             backgroundColor: '#008e00',
             color: '#f0fff0'
         });
      });
    }
    

    这不是数组,这是一个属性为
    0
    1
    的对象。如果
    data
    表示上面的对象,并且您希望访问其属性
    new\u count
    ,那么为什么不写入
    数据。new\u count
    ?对象中没有最后一个元素,因为未定义属性的排序顺序,请参阅:了解更多详细信息。假设所有键都是数字,可以尝试
    var lastIndex=Math.max.apply(Object.keys(Object.map(Number))
    这不是一个数组,这是一个属性为
    0
    1的对象