javascript-获取具有值的最新行

javascript-获取具有值的最新行,javascript,Javascript,我有几个值的json。我可以使用json[json.length-1].ADESC访问最后一个值 问题是,最后一个值或几个最后的值可以是“…”。我需要得到除此“…”之外的最后一个值 以下是数据示例: start ... working ... ... ... 在这种情况下,我需要让“工作”。可以有任何带有“…”的行,也可以有许多最后带有“…”的行 我试过这个: if( json[json.length -1].ADESC != '...' ) { json[json.length -1

我有几个值的json。我可以使用json[json.length-1].ADESC访问最后一个值

问题是,最后一个值或几个最后的值可以是“…”。我需要得到除此“…”之外的最后一个值

以下是数据示例:

start
...
working
...
...
...
在这种情况下,我需要让“工作”。可以有任何带有“…”的行,也可以有许多最后带有“…”的行

我试过这个:

if( json[json.length -1].ADESC != '...' ) {
    json[json.length -1].ADESC
} else if ( json[json.length -2].ADESC != '...' ) {
    json[json.length -2].ADESC
} else if ( json[json.length -3].ADESC != '...' ) {
    json[json.length -3].ADESC
} else if 
...
但我认为这并不是完成这项任务的最佳方式,我担心更好的解决方案是我的技能所不能提供的。多谢各位

我尝试添加for循环。执行时没有错误,但不幸的是根本没有数据:)我在创建此反向循环时遇到了一点问题:(


for(var i=-1;i首先过滤这些值,然后像下面那样使用它

const json=[{ADESC:'foo'},{ADESC:''.'''.},{ADESC:''.'''.''},{ADESC:''.'''.'''},{ADESC:'.'''''.}];
const items=json.filter(item=>item.ADESC!=='…');
console.log(items[items.length-1].ADESC)
请参见此处的结果

更新:要避免提取所有项目值,请使用:

实时代码:


谢谢大家的回答和评论。这是我找到的解决方案,它完全符合我的需要。正如我提到的,我遇到了反向循环的问题。当我找到reverse()时,它使我的工作变得更轻松

json.reverse();
for(var i = 0; i < json.length; i++){ 
    if(json[i].ADESC != '. . .'){ 
          json[i].ADESC; 
          break;
    }
}
json.reverse();
对于(var i=0;i
“我有几个值的json”-不,您没有。根据您的示例,它是一个对象数组()。从最后一个元素循环到第一个元素。停在第一个
ADESC
不是
的地方。谢谢Andreas,你说得对,我不是开发人员,而是sysop。我用for Loop编辑了原始帖子。你能看一下吗?你真的应该先读一本教程;)
“…!==”
json>[json.length]
未定义的
(数组从索引零开始),
-undefined
NaN
总是
false
为什么OP应该迭代整个数组来提取每个
ADESC
属性的值,然后删除等于
的元素呢方法(imho)@Andreas,答案更新,链接更新。reduceRight可能对OP有用。@Andreas,哦,我的糟糕。将其更改为item.ADESC!=''''.
(让i=json.length-1;i>=0;i--){…}
(请重命名变量。内容不是)
const json = [ {"ADESC": "..." }, {"ADESC": "2" }, {"ADESC": "3" }, 
               {"ADESC": "..."} ,{"ADESC": "6" },{"ADESC": "..." }];
const values = json.map(item => item.ADESC)        //Get the values 
                   .filter(item => item !=="...")  //Remove the unused '...'
                   .splice(-1)[0];                 //Get the last one, "6"
const json = [ {"ADESC": "..." }, {"ADESC": "2" }, {"ADESC": "3" }, 
               {"ADESC": "..."} ,{"ADESC": "6" },{"ADESC": "..." }];

const values = json.reduceRight( (acc, cur) => {
   return acc ? acc :  (cur.ADESC !== "..."? cur.ADESC : null);
}, null); 
json.reverse();
for(var i = 0; i < json.length; i++){ 
    if(json[i].ADESC != '. . .'){ 
          json[i].ADESC; 
          break;
    }
}