javascript remove 如何查找具有值的數組索引?




js map (8)

說我有這個

imageList = [100,200,300,400,500];

這給了我

[0]100 [1]200

有什麼方法在JavaScript中返回值的索引?

即我想索引為200 ,我得到回報1


這是另一種方式在javascript中查找複雜數組中的值索引。 希望確實幫助某人。 讓我們假設我們有一個如下的JavaScript數組,

var studentsArray =
     [
    {
    "rollnumber": 1,
    "name": "dj",
    "subject": "physics"
   },
   {
   "rollnumber": 2,
  "name": "tanmay",
  "subject": "biology"
   },
  {
   "rollnumber": 3,
   "name": "amit",
   "subject": "chemistry"
   },
  ];

現在,如果我們有要求選擇數組中的特定對象。 讓我們假設我們想要找到名稱為Tanmay的學生索引。

我們可以通過遍歷數組並比較給定鍵的值來完成此操作。

function functiontofindIndexByKeyValue(arraytosearch, key, valuetosearch) {

    for (var i = 0; i < arraytosearch.length; i++) {

    if (arraytosearch[i][key] == valuetosearch) {
    return i;
    }
    }
    return null;
    }

您可以使用該函數來查找特定元素的索引,如下所示,

var index = functiontofindIndexByKeyValue(studentsArray, "name", "tanmay");
alert(index);

你可以使用indexOf

var imageList = [100,200,300,400,500];
var index = imageList.indexOf(200); // 1

如果無法在數組中找到值,您將得到-1。


當名單不是很長時,這是我知道的最好的方式:

function getIndex(val) {
    for (var i = 0; i < imageList.length; i++) {
        if (imageList[i] === val) {
            return i;
        }
    }
}

var imageList = [100, 200, 300, 400, 500];
var index = getIndex(200);

使用jQuery的函數jQuery.inArray

jQuery.inArray( value, array [, fromIndex ] )
(or) $.inArray( value, array [, fromIndex ] )

對於數組使用帶indexOf map

var imageList = [
   {value: 100},
   {value: 200},
   {value: 300},
   {value: 400},
   {value: 500}
];

var index = imageList.map(function (img) { return img.value; }).indexOf(200);

console.log(index);

在現代瀏覽器中,您可以使用findIndex

var imageList = [
   {value: 100},
   {value: 200},
   {value: 300},
   {value: 400},
   {value: 500}
];

var index = imageList.findIndex(img => img.value === 200);

console.log(index);

它的ES6的一部分,並支持 Chrome,FF,Safari和(只可惜)IE邊緣


indexOf怎麼樣?

alert(imageList.indexOf(200));

// Instead Of 
var index = arr.indexOf(200)

// Use 
var index = arr.includes(200);

請注意 :包含函數是數組上的一個簡單的實例方法,並有助於輕鬆查找某個項目是否在數組中(包括NaN,而不像indexOf)


可以使用ES6函數Array.prototype.findIndex

findIndex

findIndex()方法返回數組中滿足提供的測試函數的第一個元素的索引。 否則返回-1。

var fooArray = [5, 10, 15, 20, 25];
console.log(fooArray.findIndex(num=> { return num > 5; }));

// expected output: 1

按對象屬性查找索引。

按對象屬性查找索引:

yourArray.findIndex(obj => obj['propertyName'] === yourValue)

例如,有一個這樣的數組:

let someArray = [
    { property: 'OutDate' },
    { property: 'BeginDate'},
    { property: 'CarNumber' },
    { property: 'FirstName'}
];

然後,找到必要屬性索引的代碼如下所示:

let carIndex = someArray.findIndex( filterCarObj=> 
    filterCarObj['property'] === 'CarNumber');




indexof