我有一个这样的数组:
[{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(),但这返回对象,而不是索引。
当前回答
var list = [
{prop1:"abc",prop2:"qwe"},
{prop1:"bnmb",prop2:"yutu"},
{prop1:"zxvz",prop2:"qwrq"}
];
var findProp = p => {
var index = -1;
$.each(list, (i, o) => {
if(o.prop2 == p) {
index = i;
return false; // break
}
});
return index; // -1 == not found, else == index
}
其他回答
我在上面看到了很多解决方案。
在这里,我使用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)
var list = [
{prop1:"abc",prop2:"qwe"},
{prop1:"bnmb",prop2:"yutu"},
{prop1:"zxvz",prop2:"qwrq"}
];
var findProp = p => {
var index = -1;
$.each(list, (i, o) => {
if(o.prop2 == p) {
index = i;
return false; // break
}
});
return index; // -1 == not found, else == index
}
最好和最快的方法是:
const products = [
{ prop1: 'telephone', prop2: 996 },
{ prop1: 'computadora', prop2: 1999 },
{ prop1: 'bicicleta', prop2: 995 },
];
const index = products.findIndex(el => el.prop2 > 1000);
console.log(index); // 1
var index;
yourArray.some(function (elem, i) {
return elem.prop2 === 'yutu' ? (index = i, true) : false;
});
遍历数组的所有元素。 它返回索引,如果条件不匹配则返回true或false。
重要的是显式返回值为true(或布尔结果为true的值)。单个赋值是不够的,因为索引可能为0 (Boolean(0) === false),这不会导致错误,但会禁用中断迭代。
Edit
上面的一个更简短的版本:
yourArray.some(function (elem, i) {
return elem.prop2 === 'yutu' && ~(index = i);
});
试试这段代码
var x = [{prop1:"abc",prop2:"qwe"},{prop1:"bnmb",prop2:"yutu"},{prop1:"zxvz",prop2:"qwrq"}]
let index = x.findIndex(x => x.prop1 === 'zxvz')