是否有可能在数组的一个位置有多个字符串?

时间:2017-06-04 11:47:32

标签: javascript

例如,如果我的数组是

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

我创建了一个函数,如果我键入' Volvo'它说'正确'。有可能做这样的事情:

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

因此,当我输入位置1的内容时,我可以键入沃尔沃或大众汽车,它会说“正确”'? (但不是两者都有)

7 个答案:

答案 0 :(得分:2)

您定义了一个多维数组。

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

}

答案 1 :(得分:1)

您可以将第二个数组放在第一个数组中:

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

答案 2 :(得分:0)

使用String#split方法(使用分隔符|)拆分字符串,并使用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
}

答案 3 :(得分: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))

答案 4 :(得分:0)

您可以使用对象而不是数组进行快速查找(includesindexOf不执行此操作):

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

您的支票将在固定时间内运行:

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

答案 5 :(得分: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"];

所以你可以检查一下这个阵列是否有“大众汽车......”

答案 6 :(得分: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 );