Nói rằng tôi đã có cái này
imageList = [100,200,300,400,500];
Cái nào cho tôi
[0]100 [1]200
Vân vân.
Có cách nào trong JavaScript để trả về chỉ mục với giá trị không?
Tức là tôi muốn chỉ số cho 200 , tôi được trả lại 1 .
Nói rằng tôi đã có cái này
imageList = [100,200,300,400,500];
Cái nào cho tôi
[0]100 [1]200
Vân vân.
Có cách nào trong JavaScript để trả về chỉ mục với giá trị không?
Tức là tôi muốn chỉ số cho 200 , tôi được trả lại 1 .
Câu trả lời:
Bạn có thể sử dụng indexOf
:
var imageList = [100,200,300,400,500];
var index = imageList.indexOf(200); // 1
Bạn sẽ nhận được -1 nếu không thể tìm thấy giá trị trong mảng.
Đối với mảng đối tượng sử dụng map
với indexOf
:
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);
Trong các trình duyệt hiện đại, bạn có thể sử dụng findIndex
:
var imageList = [
{value: 100},
{value: 200},
{value: 300},
{value: 400},
{value: 500}
];
var index = imageList.findIndex(img => img.value === 200);
console.log(index);
Nó là một phần của ES6 và được Chrome, FF, Safari và Edge hỗ trợ
Sử dụng chức năng của jQuery jQuery.inArray
jQuery.inArray( value, array [, fromIndex ] )
(or) $.inArray( value, array [, fromIndex ] )
Đây là một cách khác để tìm chỉ số giá trị trong mảng phức tạp trong javascript. Hy vọng giúp được ai đó thực sự. Giả sử chúng ta có một mảng JavaScript như sau,
var studentsArray =
[
{
"rollnumber": 1,
"name": "dj",
"subject": "physics"
},
{
"rollnumber": 2,
"name": "tanmay",
"subject": "biology"
},
{
"rollnumber": 3,
"name": "amit",
"subject": "chemistry"
},
];
Bây giờ nếu chúng ta có một yêu cầu để chọn một đối tượng cụ thể trong mảng. Chúng ta hãy giả sử rằng chúng ta muốn tìm chỉ số của sinh viên với tên Tanmay.
Chúng ta có thể làm điều đó bằng cách lặp qua mảng và so sánh giá trị tại khóa đã cho.
function functiontofindIndexByKeyValue(arraytosearch, key, valuetosearch) {
for (var i = 0; i < arraytosearch.length; i++) {
if (arraytosearch[i][key] == valuetosearch) {
return i;
}
}
return null;
}
Bạn có thể sử dụng hàm để tìm chỉ mục của một phần tử cụ thể như dưới đây,
var index = functiontofindIndexByKeyValue(studentsArray, "name", "tanmay");
alert(index);
Array.indexOf
không hoạt động trong một số phiên bản của trình duyệt internet explorer - có rất nhiều cách khác để thực hiện mặc dù ... xem câu hỏi / câu trả lời này: Làm cách nào để kiểm tra xem một mảng có bao gồm một đối tượng trong JavaScript không?
Có thể sử dụng một ES6
chức năng Array.prototype.findIndex
.
MDN nói :
Các
findIndex()
phương thức trả về chỉ số của phần tử đầu tiên trong mảng đó đáp ứng các quy định chức năng kiểm tra. Nếu không -1 được trả về.
var fooArray = [5, 10, 15, 20, 25];
console.log(fooArray.findIndex(num=> { return num > 5; }));
// expected output: 1
Tìm một chỉ mục theo thuộc tính đối tượng.
Để tìm một chỉ mục theo thuộc tính đối tượng:
yourArray.findIndex(obj => obj['propertyName'] === yourValue)
Ví dụ, có một mảng như vậy:
let someArray = [
{ property: 'OutDate' },
{ property: 'BeginDate'},
{ property: 'CarNumber' },
{ property: 'FirstName'}
];
Sau đó, mã để tìm một chỉ mục của tài sản cần thiết trông như thế:
let carIndex = someArray.findIndex( filterCarObj=>
filterCarObj['property'] === 'CarNumber');
Đây là ý kiến của tôi về nó, có vẻ như hầu hết các giải pháp của mọi người không kiểm tra xem mục đó có tồn tại không và nó sẽ loại bỏ các giá trị ngẫu nhiên nếu nó không tồn tại.
Trước tiên hãy kiểm tra xem phần tử có tồn tại hay không bằng cách tìm kiếm chỉ mục của nó . Nếu nó tồn tại, loại bỏ nó bằng chỉ mục của nó bằng phương thức mối nối
elementPosition = array.indexOf(value);
if(elementPosition != -1) {
array.splice(elementPosition, 1);
}
Mảng tham chiếu:
var array = [
{ ID: '100', },
{ ID: '200', },
{ ID: '300', },
{ ID: '400', },
{ ID: '500', }
];
Sử dụng filter
và indexOf
:
var in_array = array.filter(function(item) {
return item.ID == '200' // look for the item where ID is equal to value
});
var index = array.indexOf(in_array[0]);
Vòng qua từng mục trong mảng bằng cách sử dụng indexOf
:
for (var i = 0; i < array.length; i++) {
var item= array[i];
if (item.ID == '200') {
var index = array.indexOf(item);
}
}
// Instead Of
var index = arr.indexOf(200)
// Use
var index = arr.includes(200);
Xin lưu ý : Hàm bao gồm là một phương thức ví dụ đơn giản trên mảng và giúp dễ dàng tìm thấy nếu một mục nằm trong mảng (bao gồm NaN không giống như indexOf)