在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ JS數(shù)組取對(duì)象索引問(wèn)題

JS數(shù)組取對(duì)象索引問(wèn)題

圖片描述

根據(jù)一個(gè)對(duì)象,在數(shù)組里面找到對(duì)應(yīng)對(duì)象的索引值,有什么好方法嗎

回答
編輯回答
別硬撐

let obj = {name:'cn',age:24,sex:'M'};
let arrs = [

{name:'cn',age:23,sex:'M'},
{name:'cn',age:23,sex:'M'},
{name:'cn',age:23,sex:'M'}

];
let newArrs = arrs.map(function(value,index){

return value.sex === obj.sex?index:null;

}).filter(function(Value){

return !!value

});

這個(gè)newArrs就是你要的過(guò)濾數(shù)據(jù),內(nèi)容是過(guò)濾后的原數(shù)據(jù)索引號(hào)的數(shù)據(jù)

2017年9月23日 20:01
編輯回答
爆扎

剛動(dòng)手寫(xiě)了一下,用findindex來(lái)實(shí)現(xiàn),代碼如下:
var arr = [{

id: 1,
block: 1,
name:"一號(hào)線",
size:0,
type:"xxx"

},{

id: 2,
block: 21,
name:"一號(hào)線",
size:0,
type:"xxx"

},

{
    id: 3,
    block: 3,
    name:"一號(hào)線",
    size:0,
    type:"xxx"

},
{
    id: 4,
    block: 4,
    name:"一號(hào)線",
    size:0,
    type:"xxx"

}];

//obj為要查詢的對(duì)象
var obj={

id: 4,
block: 4,
name:"一號(hào)線",
size:0,
type:"xxx"

}
//查找指定對(duì)象在數(shù)組中的索引
var index=arr.findIndex(function (x) {

return x.id==obj.id

})
console.log("索引-----"+index)

2017年3月15日 20:41
編輯回答
初心

對(duì)象有key。拿索引值來(lái)干嘛。
如果是數(shù)組:在找到對(duì)象的時(shí)候把索引值一起return ;就行了

2018年1月27日 02:12
編輯回答
你好胸

首先確定對(duì)象里面具有唯一特性的key,比如你上面給出例子的“id”,
如果有的話,就把它當(dāng)做比較的標(biāo)準(zhǔn);如果沒(méi)有的話,那就全量比較咯。

然后嘛,遍歷數(shù)組,找子元素中id與對(duì)象id相等的項(xiàng)。

至于遍歷嘛,不想自己寫(xiě)for循環(huán),就用lodash這樣的庫(kù)咯。

循環(huán)函數(shù):

    function find(arr, obj) {
      for (var i = 0,j = arr.length; i < j; i++) {
        var match = true
        // 如果id不具有唯一特性
        // Object.keys(obj).forEach(function(item) {
        //   if (obj[item] !== arr[i][item]) {
        //     match = false
        //   }
        // })
        
        // 如果id具有唯一特性
        if (obj.id !== arr[i].id) match = false
        if (match) return i
      }
      return -1
    }
2017年2月6日 18:11
編輯回答
純妹
    function thisindex(arr,myarr){
            return arr.findIndex(function(val,index){
                if(JSON.stringify(val)===JSON.stringify(myarr)){
                    return index;
                }
             });
        }   
2017年9月28日 10:05
編輯回答
蔚藍(lán)色
var obj = {a:1}
var arr = [{b:2},{a:1},{c:3}]

function findIndex(l,o){
    var objStr = JSON.stringify(o)
    return l.reduce((index,ele,i)=>{
        if(JSON.stringify(ele) === objStr) {
            return i
        } else {
            return index
        }
    },-1)
}

console.log(findIndex(arr,obj))
2017年3月31日 21:22