Javascript 确定JSON对象的最后一个元素
我的服务器(PHP)响应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
{
"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
,那么对于accesingnew\u count
,您可以使用
jsondata.new_count
如果要访问最后一个元素,则可以通过
jsondata.new_count.action_count
如果您的对象名为lets say
jsondata
,那么对于accesingnew\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的对象