给定一个字典数组,如何找到包含某个键的最后一个字典“test”。
我发现第一次使用:
answerDict = myarray.find(hasOwnProperty('test'));
但我不确定如何从右到左进行搜索。
我尝试过使用lodash:
answerDictLast = _.findLast(myarray, function(n){return n.hasOwnProperty('test');});
但这不起作用。 (当我在节点中运行它时,我得到'_.findLast不是函数',即使在需要lodash之后)。
我也研究过使用lastIndexOf
,但似乎无法在字典中找到密钥。有什么想法吗?谢谢!
我知道我可以遍历整个阵列,但我很想找到一种更简洁的方法来做到这一点,因为我怀疑它有一个。
答案 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)
你可以向后遍历数组。
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;
答案 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"];