如何通过文本搜索返回JSON数组中项目的索引位置?
How can I return an Index location for an item in a JSON array by searching with text?
这是我的JSON数组:
var planets = [{
"Name": "Mercury",
"Temperature": "427°C",
"Position" : 1
}, {
"Name": "Venus",
"Temperature": "462°C",
"Position" : 2
}, {
"Name": "Earth",
"Temperature": "16°C",
"Position" : 3
}]
使用文本"地球"有一个方法,将返回我的项目地球在我的行星数组的索引位置?
例如:planets.find("Earth")
Plain JS: findIndex
如果数组中有元素,则findIndex()方法返回数组中的索引该数组满足提供的测试功能。否则-1为返回。
[{
"Name": "Mercury",
"Temperature": "427°C",
"Position" : 1
}, {
"Name": "Venus",
"Temperature": "462°C",
"Position" : 2
}, {
"Name": "Earth",
"Temperature": "16°C",
"Position" : 3
}].findIndex(x => x.Name === "Earth")
如果你在ie9 +中,你可以使用reduce函数
reduce()方法对累加器和每个累加器应用函数数组的值(从左到右)以将其减少为单个价值。
[{
"Name": "Mercury",
"Temperature": "427°C",
"Position" : 1
}, {
"Name": "Venus",
"Temperature": "462°C",
"Position" : 2
}, {
"Name": "Earth",
"Temperature": "16°C",
"Position" : 3
}].reduce(function (foundSoFar, x, i) { // Note no arrow funcion
if (foundSoFar < 0 && x.Name === "Earth") {
return i;
} else {
return foundSoFar;
}
}, -1);
或者,使用像ramda
试试这个:
var index = -1;
var val = 'Earth';
var filteredObj = planets.find(function(item, i){
if(item.Name === val){
index = i;
return i;
}
});
console.log(index, filteredObj);
与常规js:
function getIndexOfPlanet(name){
for( var i in planets )
if( planets[i].Name == name )
return i;
}
使用Lodash实用程序方法查找索引,就像:
var planets = [{
"Name" : "Mercury",
"Temperature" : "427°C",
"Position" : 1
}, {
"Name" : "Venus",
"Temperature" : "462°C",
"Position" : 2
}, {
"Name" : "Earth",
"Temperature" : "16°C",
"Position" : 3
}]
function getIndexOfPlanet(name){
return _.findIndex(planets, { 'Name':name});
}
console.log( getIndexOfPlanet('Earth') );
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.15.0/lodash.min.js"></script>
var locationIndex;planets.forEach(函数(避署,印第安纳州){如果(避署。名称== "地球")locationIndex = ind;};console.log (locationIndex);
find或findIndex可能不支持某些浏览器,如IE.
您可以使用array#查找数组中当前正在处理的元素的index
:
var planets = [{"Name": "Mercury","Temperature": "427°C","Position": 1}, {"Name": "Venus","Temperature": "462°C","Position": 2}, {"Name": "Earth","Temperature": "16°C","Position": 3}],
earthIndex = -1,
earth = planets.find(function(item, index) {
if (item.Name === 'Earth') {
earthIndex = index;
return true;
}
return false;
});
console.log('Earth index is:', earthIndex);
相关文章:
- 当索引页面上的项目单击时发布 ajax
- 查找数组中项目包含子字符串的索引
- 语义 UI 手风琴获取打开事件中打开的项目的索引
- 我可以按索引而不是名称引用ngRepeat中的项目吗
- 猫头鹰旋转木马2从具有特定内容的元素接收项目索引
- 将 JavaScript 数组中的项目放在任意索引上
- 将数字存储在数组中会混淆如何根据值而不是索引来操作这些项目
- 下划线.js - OO:在索引处获取项目?有没有更好的JS库来做到这一点
- 如何在索引视图中的Ruby on Rails中使用JavaScript切换项目的状态
- 使用 jQuery 将项目附加到列表中,但如果使用 Javascript 的项目相同,则使用索引
- 获取新推送项目的索引
- 尝试使用PHP / Javascript构建一个可点击的索引,该索引显示单击的每个项目的数据
- 如何使用 Javascript 将迭代器索引号附加到数组中的每个项目
- 将两个数组中的项目合并到第三个数组中,其中一列从第一个数组中减去第二个索引
- 在ng-options中,是否可以使用“(索引,项目)在vm.items”语法中进行预选
- 如何通过限制和降序创建At获取返回的项目索引
- 删除索引后的所有项目
- 在javascript中使用过滤器时获取项目索引
- 显示在<选择>框中的项目索引
- 使用项目索引的单元测试数组