Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.02.2020, 22:25
Новичок на форуме
Отправить личное сообщение для nikofedorov Посмотреть профиль Найти все сообщения от nikofedorov
 
Регистрация: 09.02.2020
Сообщений: 8

Аналог ВПР(excel) в JS
Добрый вечер!

Не могу в интернете найти аналог функции ВПР в Excel, необходимо вернуть значение после поиска внутри массива. Прошу помочь с кодом, как это возможно реализовать:

Что ищем:
x = "Бразилия"


Массив, где ищем(синтаксис можно менять):
Аргентина;/argentina.png
Бразилия;/brasil.png
Германия;/germany.jpg


Должно вернуться
/brasil.png
Ответить с цитированием
  #2 (permalink)  
Старый 25.02.2020, 22:33
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

В JS это может быть и объект:

var country = {
    "Аргентина": "/argentina.png",
    "Бразилия": "/brasil.png",
    "Германия": "/germany.jpg"
}


тогда country[x] вернет /brasil.png. Если передать в JS как показано, то можно искать и рег. выражением. Так что сначала определите что ему будет передано, а затем можно определиться с поиском.
Ответить с цитированием
  #3 (permalink)  
Старый 25.02.2020, 22:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

nikofedorov,

const obj = {
"Аргентина" : "argentina.png",
"Бразилия" : "brasil.png",
"Германия" : "germany.jpg"};
let x = "Бразилия";
let y = obj[x];
alert(y);
Ответить с цитированием
  #4 (permalink)  
Старый 26.02.2020, 08:12
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,701

Это смотря как интерпретировать таблицы exel в Javascript
В exel лист имеет строки от 1 до n и столбцы от A до ...
Однако, дпускается и числовое обозначение столбцов от 1 до n
В этом случае в javascript таблицу можно представить так двумерный массив
const list =[

[value11, value12, value13,....],
[value21, value22, value23,....],
.......
[valuen1, valuen2, valuen3,....],
];

Но сама таблица на листе задается хитро - это прямогольник
от строки nrb до строки nre и от столбца ncb и до столбца nce

Функция ВПР (VLOOKUP) имеет вид
ВПР (знач, табл, столб, интерв)
знач - то значение, которое ищем в первом столбце таблицы
столб - номер столбца из которого мы должны взять значение
параметр интерв - если true, может быть найдено не точное, а ближайшее значение, а если false, то ищется точное значение
function VLOOKUP (value, [list, trb, tcb, tre, tce], colmn, interv = true) {
// Параметр tabl задается как массив
// list - лист exel
// trb - начальная строка таблицы в листе
// tcb - начальная колонка таблицы в листе
// tre - конечная строка таблицы в листе
// tce - конечная колонк таблицы в листе
  trb--; tcb--; tre--; tce--; colmn --;
  if (typeof value != 'number') interv = false;
  let findr;
  if (interv) {
	let delt = Infinity;
	findr = -1;
	for (let i = trb; i<= tre; i++) {
		if (Math.abs(value - list[i][tcb]) < delt) {
			delt = Math.abs(value - list[i][tcb]);
			findr = i;
		}
	}
  } else {
	findr = -1
	for (let i = trb; i<= tre; i++) {
	   if (value == list[i][tcb]) {
		  findr = i;
		  break;
		}
	}
  }
  return findr == -1 ?  undefined : list[findr][tcb+colmn];
}

const list1 = [
[0,0,0,0,0],
[0,'Аргентина','argentina.png', 0,0],
[0,'Бразилия','brasil.png', 0,0],
[0,'Германия','germany.jpg', 0,0],
[0,0,0,0,0]
]

const img = VLOOKUP('Бразилия', [list1, 2,2,4,3], 2, false)
alert (img)

Последний раз редактировалось voraa, 26.02.2020 в 08:18.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аналог jQuery(...).animate на чистом JS 2chan Общие вопросы Javascript 3 12.07.2015 19:23
Пример тестовых заданий на js junior elshaarawy Учебные материалы 3 26.03.2015 15:17
Картинка обрабатывается js 4yBaK Общие вопросы Javascript 10 11.09.2011 09:28
Аналог php функции в JS ВэйДлин Общие вопросы Javascript 1 20.07.2011 01:03