【问题标题】:How to match strings in different arrays using Javascript如何使用Javascript匹配不同数组中的字符串
【发布时间】:2020-04-08 19:18:25
【问题描述】:

我正在 Google Optimize 中为旅游网站创建一个脚本。这个想法是从数组中返回随机字符串,以便在搜索栏中显示提示,例如“尝试搜索 [位置]”。但是,有两个搜索栏;如果您单击第一个,它会展开并出现第二个。

现在,同一行显示在两个搜索栏中。

我想创建两个数组,一个包含目的地,一个包含酒店名称,而不是一个包含目的地和酒店名称的数组。有没有办法将每个字符串链接到来自不同数组的另一个字符串,例如通过给它们值。

尝试搜索西班牙 然后在第二个搜索栏中尝试 [Spanish hotel]。

查看下面的截图

$(".vak-field__cover:first").on("click", function(){

    var texts = ["Egypt", "Spain", "Creta", "France", "Fuerteventura", "Bali", "Sicily", 
                "Turkish Riviera", "Mallorca", "Gran Canaria", "Mirador Maspalomas", 
                "Vila Sal Azul", "Millor paradiso playa", "Cinc plats *3", 
                "Portobello village", "Main star park 5*", "Sam's treasure trove"] ;

    var randomNumber = Math.floor(Math.random() * 17);
    console.log(randomNumber);

    $( ".vak-quicksearch__placeholder:first" ).html( "You could search for \"" + texts[randomNumber]  + "\"" );
    $( ".vak-field>input" ).attr( "placeholder", "Try \"" + texts[randomNumber] + "\"" );

});

【问题讨论】:

    标签: jquery arrays string


    【解决方案1】:

    在一个数组中包含两种非常不同形式的数据(国家和酒店)毫无意义。

    相反,您需要一个将这两件事关联的数据模型。

    类似:

    //prep nested, relational data
    let data = [
        {
            name: 'Egypt',
            hotels: [
                'Egypt hotel 1',
                'Egypt hotel 2'
            ]
        },
        {
            name: 'Spain',
            hotels: [
                'Spain hotel 1',
                'Spain hotel 2'
                /* etc */
            ]
        },
    ];
    
    //establish random location and hotel of that location
    let rand_location = data[Math.floor(Math.random() * data.length)];
    let rand_hotel = rand_location.hotels[Math.floor(Math.random() * rand_location.hotels.length)];
    
    //output
    $( ".vak-quicksearch__placeholder:first" ).html( "You could search for \"" + rand_location.name  + "\"" );
    $( ".vak-field>input" ).attr( "placeholder", "Try \"" + rand_hotel + "\"" );
    

    另请注意,我为您的随机生成器制作了动态;您将其硬编码为 17(数组中的项目数);更好的是从数组的真实长度中读取它,这样当您在数据中添加或删除项目时,您的代码不会中断。

    【讨论】:

    • 这就是我要找的。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2020-07-07
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    相关资源
    最近更新 更多