我有一个这样的数组:
[{prop1:"abc",prop2:"qwe"},{prop1:"bnmb",prop2:"yutu"},{prop1:"zxvz",prop2:"qwrq"},...]
我怎么能得到对象的索引,匹配的条件,而不是在整个数组上迭代?
例如,给定prop2=="yutu",我想获得索引1。
我看到过. indexof(),但认为它用于简单的数组,如["a1","a2",…]。我还检查了$.grep(),但这返回对象,而不是索引。
我有一个这样的数组:
[{prop1:"abc",prop2:"qwe"},{prop1:"bnmb",prop2:"yutu"},{prop1:"zxvz",prop2:"qwrq"},...]
我怎么能得到对象的索引,匹配的条件,而不是在整个数组上迭代?
例如,给定prop2=="yutu",我想获得索引1。
我看到过. indexof(),但认为它用于简单的数组,如["a1","a2",…]。我还检查了$.grep(),但这返回对象,而不是索引。
当前回答
TJ Crowder说,每一种方式都会有某种隐藏的迭代,使用lodash这就变成:
var index = _.findIndex(array, {prop2: 'yutu'})
其他回答
为什么不进行迭代呢?新的Array.prototype.forEach非常适合这个目的!
如果需要,可以使用二叉搜索树通过单个方法调用进行查找。这是一个整洁的实现的BTree和红黑搜索树在JS - https://github.com/vadimg/js_bintrees -但我不确定你是否能同时找到索引。
function findIndexByKeyValue(_array, key, value) {
for (var i = 0; i < _array.length; i++) {
if (_array[i][key] == value) {
return i;
}
}
return -1;
}
var a = [
{prop1:"abc",prop2:"qwe"},
{prop1:"bnmb",prop2:"yutu"},
{prop1:"zxvz",prop2:"qwrq"}];
var index = findIndexByKeyValue(a, 'prop2', 'yutu');
console.log(index);
试试这段代码
var x = [{prop1:"abc",prop2:"qwe"},{prop1:"bnmb",prop2:"yutu"},{prop1:"zxvz",prop2:"qwrq"}]
let index = x.findIndex(x => x.prop1 === 'zxvz')
使用Array.map()和Array.indexOf(string)
const arr = [{ 提案 1: “ABC”, 提案2:“QWE” }, { 提案 1: “bnmb”, 提案2:“玉兔” }, { 提案1:“ZXVZ”, 提案2:“QWRQ” }] const index = arr.map(i => i.prop2).indexOf(“yutu”); 控制台.log(索引);
我在上面看到了很多解决方案。
在这里,我使用map函数在数组对象中查找搜索文本的索引。
我将用学生数据来解释我的答案。
步骤1:为学生创建数组对象(可选,您可以创建自己的数组对象)。 学生var =[{名称:“Rambabu htno: " 1245 "},{名称:“迪”,htno: " 1246 "},{名称:“poojitha htno: " 1247 "},{名称:“magitha htno: " 1248 "}); 步骤2:创建变量搜索文本 var studentNameToSearch =“Divya”; 步骤3:创建变量来存储匹配的索引(这里我们使用map函数进行迭代)。 var matchedIndex = students。Map(函数(obj){返回obj.name;}) .indexOf (studentNameToSearch);
学生var =[{名称:“Rambabu htno: " 1245 "},{名称:“迪”,htno: " 1246 "},{名称:“poojitha htno: " 1247 "},{名称:“magitha htno: " 1248 "}); var studentNameToSearch =“Divya”; var matchedIndex = students。Map(函数(obj){返回obj.name;}) .indexOf (studentNameToSearch); console.log (matchedIndex); alert("你的搜索名称索引在数组中是:"+matchedIndex)