使用 Underscore.js 提取包含特定字符串的特定对象
Extract specific object contain specific string using Underscore.js
我有这个字段,我用的是下划线js
我正在尝试访问包含 .tgz
的 _id
字段
<html>
<head>
<title>_.contains() function</title>
<script type="text/javascript" src=
"https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js" >
</script>
<script type="text/javascript" src=
"https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore.js">
</script>
</head>
<body>
<script type="text/javascript">
var people = [
{"id_": "sakshi.tgz"},
{"id_": "aishwarya.zip"},
{"id_": "ajay.tgz"},
{"id_": "akansha.yml"},
{"id_": "preeti.json"}
]
console.log(_.where(people, {id_: "sakshi.tgz"}));
</script>
</body>
</html>
我只知道如何进行精确匹配。
console.log(_.where(people, {id_: "sakshi.tgz"}));
预期结果
如您所见,我正在尝试获取其中 2 个以 .tgz
结尾的。
对我有什么提示吗?
Fiddle : https://codepen.io/sn4ke3ye/pen/KKzzzLj?editors=1002
如果您有一个字符串,并且您想知道它的最后四个字符是否等于 '.tgz'
,这是一种可行的方法 (MDN: slice):
aString.slice(-4) === '.tgz' // true or false
如果该字符串是某个对象的 id_
属性,只需先引用 id_
属性,然后在其上调用 slice
:
someObject.id_.slice(-4) === '.tgz' // true or false
这是我们想要对集合中的每个对象执行的操作,所以这是我们的 iteratee。为了重复应用,我们把它包装成一个函数:
function idEndsWithTgz(obj) {
return obj.id_.slice(-4) === '.tgz';
}
现在我们可以使用这个迭代器 _.filter
:
console.log(_.filter(people, idEndsWithTgz));
关于Underscore更全面的介绍,也可以参考我最近的另一个回答:
let newArr = people.filter(obj => obj._id.substr(obj._id.length -4) === ".tgz");
我使用filter
和substr
JavaScriptbuilt-in方法对以.tgz
结尾的_id
进行排序。
我有这个字段,我用的是下划线js
我正在尝试访问包含 .tgz
_id
字段
<html>
<head>
<title>_.contains() function</title>
<script type="text/javascript" src=
"https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js" >
</script>
<script type="text/javascript" src=
"https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore.js">
</script>
</head>
<body>
<script type="text/javascript">
var people = [
{"id_": "sakshi.tgz"},
{"id_": "aishwarya.zip"},
{"id_": "ajay.tgz"},
{"id_": "akansha.yml"},
{"id_": "preeti.json"}
]
console.log(_.where(people, {id_: "sakshi.tgz"}));
</script>
</body>
</html>
我只知道如何进行精确匹配。
console.log(_.where(people, {id_: "sakshi.tgz"}));
预期结果
如您所见,我正在尝试获取其中 2 个以 .tgz
结尾的。
对我有什么提示吗?
Fiddle : https://codepen.io/sn4ke3ye/pen/KKzzzLj?editors=1002
如果您有一个字符串,并且您想知道它的最后四个字符是否等于 '.tgz'
,这是一种可行的方法 (MDN: slice):
aString.slice(-4) === '.tgz' // true or false
如果该字符串是某个对象的 id_
属性,只需先引用 id_
属性,然后在其上调用 slice
:
someObject.id_.slice(-4) === '.tgz' // true or false
这是我们想要对集合中的每个对象执行的操作,所以这是我们的 iteratee。为了重复应用,我们把它包装成一个函数:
function idEndsWithTgz(obj) {
return obj.id_.slice(-4) === '.tgz';
}
现在我们可以使用这个迭代器 _.filter
:
console.log(_.filter(people, idEndsWithTgz));
关于Underscore更全面的介绍,也可以参考我最近的另一个回答:
let newArr = people.filter(obj => obj._id.substr(obj._id.length -4) === ".tgz");
我使用filter
和substr
JavaScriptbuilt-in方法对以.tgz
结尾的_id
进行排序。