Există un singur Apps Script funcție echivalentă pentru a se POTRIVI() cu ADEVĂRAT?

0

Problema

Am nevoie pentru a scrie unele funcții care implică aceeași funcție ca Foile de funcția MATCH() cu parametru 'tipul de sortare' setat la ADEVĂRAT sau 1, astfel încât o căutare de 35 de în [10,20,30,40] va produce 2, indicele de 30 de ani, următoarea cea mai mică valoare de 35 de ani.

Știu că pot face acest lucru prin looping peste matrice de căutare, și testarea fiecărui valoare contra valoare de căutare până la o valoare mai mare decât valoare de căutare este găsit, dar mi se pare că trebuie să fie o prescurtare mod de a face acest lucru. Noi nu trebuie să faci asta atunci când caută o valoare exactă; putem folosi doar indexOf(). Am fost surprins când am aflat prima dată că indexOf() nu are un parametru de tip de căutare, dar poate reveni doar un -1 dacă o valoare exactă nu este găsit.

Nu există nici o funcție înrudită cu indexOf() care va face acest lucru, sau este de fapt necesar pentru a bucla peste matrice de fiecare dată când aveți nevoie pentru a face acest lucru?

1

Cel mai bun răspuns

3

Probabil sunteți în căutarea pentru array.find() metoda. La impelentation ar putea fi ceva de genul:

var arr = [10,20,30,40]

// make a copy of the array, reverse it and do find with condition
var value = arr.slice().reverse().find(x => x < 35)

console.log(value) // output --> 30 (first element less than 35 in the reversed array)

var index = arr.indexOf(value)

console.log(index) // output --> 2 (index of the element in the original array)

https://www.w3schools.com/jsref/jsref_find.asp

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find

Nu există o altă metodă array.findIndex(). Probabil puteți folosi la fel de bine:

var arr = [10,20,30,40]

// find more or equal 35 and return previous index
var index = arr.findIndex(x => x >= 35) - 1 

console.log(index) // output --> 2

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex

2021-11-24 06:57:06

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................