前言
如果你要對一個陣列物件(二維陣列)進行增刪,它的陣列下標會根據陣列長度進行變化,這會導致你無法正確找到陣列項,
適用于 對陣列進行增刪還要確定該項位置 需求,
如果你指定一個屬性(匹配陣列項從而找到該項所在下標),那么無論陣列長度怎么變化,你都可以 “正確” 找到該項,
一維陣列
// Array Object
const arr = ['王佳斌', '孫玉紅', '11']
// 獲取 '11' 該項所在位置的下標
// '11' 即要匹配的變數(請根據邏輯, 我這里直接寫死了)
var _index = arr.findIndex(value => value == '11')
console.log(_index)//2
二維陣列
// Array Object
const arr = [
{ id: 1, name: '王佳斌' }, //下標: 0
{ id: 2, name: '孫玉紅' }, //下標: 1
{ id: 3, name: '11' } //下標: 2
]
// 獲取 id == 2 該項所在位置的下標
// 2 即要匹配的id變數(請根據邏輯, 我這里直接寫死了)
var _index = arr.findIndex(item => item.id === 2)
console.log(_index)//1
如果你覺得不夠優雅,也可以封裝成函式,如下所示:
// Array Object
const arr = [
{ id: 1, name: '王佳斌' }, //0
{ id: 2, name: '孫玉紅' }, //1
{ id: 3, name: '11' } //2
]
/*
* 根據條件獲取陣列項下標
* 適用于對陣列進行增刪的需求
* @param {Array} arr - 要操作的陣列
* @param {String} key - 要匹配屬性
* @param {String} value - 要匹配的屬性值
* @return String
*/
function getIndex(arr, key, value){
return arr.findIndex(item => item[key] === value)
}
// test
console.log(getIndex(arr, 'id', 3))//2
console.log(getIndex(arr, 'name', '11'))//2
注意事項
如果回傳 -1 則表示未找到該項,你應該做一下處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/271949.html
標籤:其他
下一篇:第一章 無名小生
