Можно ли иметь несколько строк в одной позиции массива?

1

Например, если мой массив

var cars = ["Saab", "Volvo", "BMW"];
var answer = cars[1];

и я создаю функцию, которая, если я нахожу "Volvo", говорит "Правильно". Можно ли сделать что-то вроде этого:

var cars = ["Saab", "Volvo|volkswagen", "BMW"];

Поэтому, когда я печатаю то, что находится в позиции 1, я могу напечатать Volvo или volkswagen, и он скажет "правильно"? (Но не оба)

Теги:

7 ответов

2

Вы определяете многомерный массив.

var cars = [["Saab"], ["Volvo", "volkswagen"], ["BMW"]];
if(cars[1].includes(val)){

}
1

У вас может быть второй массив внутри первого:

var cars = ["Saab", ["Volvo", "Volkswagen"], "BMW"];
0

Вы можете сделать следующее.

function check( array, position, value){
        var values = array[position].split('|');
        if(values.indexOf(value) >= 0)
            alert("Right");
        else alert("wrong");
    }
    var cars = ["Saab", "Volvo|volkswagen", "BMW"];
    value = prompt("What is the value at position 1 ");
    check(cars, 1, value );
0

Вы можете создать хэш-объект:

var cars = ["Saab", "Volvo|volkswagen", "BMW"];

cars=cars.reduce(function(obj,el,i){
    obj[i]=el.split("|");
    return obj;
},{});

console.log("cars is",cars);

var guess=prompt("what is at 1?");

if(cars[1].includes(guess)){
  alert("right"); 
}else{ 
    alert("wrong");
}

Итак, теперь автомобили похожи на:

cars[1]===["Volvo","volkswagen"];

Итак, вы можете проверить, есть ли у этого массива "volkswagen"...

0

Разделите строку методом String#split (с помощью seperator |) и проверьте значение, используя метод Array#indexOf или метод Array#includes.

// split the string by '|'  symbol
var answer = cars[1].split('|');

// check value by checking index in array
if(answer.indexOf(val) > -1){
   // do the rest here
}
0

Вы можете разделить элемент на | и использование includes проверку значения.

var cars = ["Saab", "Volvo|volkswagen", "BMW"];

function check(value, pos) {
  return cars[pos].split('|').includes(value)
}

console.log(check('Volvo', 1))
console.log(check('volkswagen', 1))
console.log(check('Saab', 0))
0

Вы можете использовать объект вместо массива для быстрого поиска (в том includes и indexOf):

var cars = { 
    "Saab": 0, 
    "Volvo": 1,
    "volkswagen": 1,
    "BMW": 2
};

Ваша проверка будет работать в постоянное время:

if (cars[answer] === 1) // ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню