使用数组中的键查找最后一个字典

时间:2017-06-30 17:53:32

标签: javascript arrays dictionary search lodash

给定一个字典数组,如何找到包含某个键的最后一个字典“test”。

我发现第一次使用: answerDict = myarray.find(hasOwnProperty('test'));

但我不确定如何从右到左进行搜索。

我尝试过使用lodash: answerDictLast = _.findLast(myarray, function(n){return n.hasOwnProperty('test');});

但这不起作用。 (当我在节点中运行它时,我得到'_.findLast不是函数',即使在需要lodash之后)。

我也研究过使用lastIndexOf,但似乎无法在字典中找到密钥。有什么想法吗?谢谢! 我知道我可以遍历整个阵列,但我很想找到一种更简洁的方法来做到这一点,因为我怀疑它有一个。

3 个答案:

答案 0 :(得分:1)

正如您在代码段中看到的那样 - _.findLast()就是您所需要的:

const myarray =  [{ v: 1 }, { test: 1 }, { v: 1 }, { test: 2 }, { v: 1 }];

const answerDict = _.findLast(myarray, (v) => _.has(v, 'test'));

console.log(answerDict);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

但是,_.findLast()可从lodash 2.0.0版获得。 检查你的lodash的版本。

答案 1 :(得分:0)

你可以向后遍历数组。

&#13;
&#13;
var arr = [{ key2 : "sup"}, { key2 : "pick me!"}, {key1 : "not it"}]


function findLastWithKey(array, key){
    for(var i = array.length-1; i>=0 ; i--){
        // put whatever criteria you want here
        if(array[i][key])
          return array[i];
    }
}

console.log(findLastWithKey(arr, "key2"))
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你的意思是?

var array = ["Apple test", "test Banana", "Peach", "Pumpkin test", "Tomatestto", "Mantestgo", "Guava"],
    arrayContainsCharacterDefine = [];
    for(var i=0;i<array.length;i++){
        if(array[i].slice(-4) === 'test'){
           arrayContainsCharacterDefine.push(array[i]);
         }
    }
   console.log(arrayContainsCharacterDefine);// result ["Apple test", "Pumpkin test"];

JSFIDDLE DEMO