在数组

时间:2018-05-29 16:35:53

标签: javascript jquery

我正在尝试查找与我在下面提供了代码段的数组匹配的texbox值:

$('#message').on('keyup', function () {
    suggest_array_sample = [
        { array_val: "#{person1}" },
        { array_val: "#{person2}" },
        { array_val: "#{person3}" }
    ];

    found_variable_array = [];
    $.each(suggest_array_sample, function (key, value) {
        console.log(value);
        if ($.inArray(value, textbox_value)) {
            console.log('found');
            found_variable_array.push(value);
        } else {
            console.log('not found');
        }
    })

    console.log(found_variable_array);
});
<textarea id="message"></textarea>

问题是,当我在文本框中输入#{person1}输出应该是

时,它总是返回整个数组,而不仅仅是输出应该是的输出。
  

[{array_val:“#{person1}”}] //预期输出

     

[{array_val:“#{person1}”},{array_val:“#person2”}] //在文本框中找到两个或多个匹配项时的预期输出

而不是

  

[{array_val:“#{person1}”},] {array_val:“#{person2}”,{array_val:“#{person3}”}] //当前输出

可以使用inArray(),还是需要更改代码。

4 个答案:

答案 0 :(得分:0)

使用数组的过滤方法。

yourArray.filter ( yourArrayModel => yourArrayModel.fieldValue === yourSearchValue )

在您的情况下,yourSearchValue可以是“{#person1}”

有关更多信息,请查看过滤方法文档,我希望这是您想要的。

答案 1 :(得分:0)

目前还不完全清楚你要实现的目标。我用$ .inArray写了一些东西,告诉你找到的值的数组索引。您需要在数组上使用.map()来提取所需的val。

编辑:

根据我对您的评论的理解,我现在每次找到值时都会将值添加到found_value_array。

或者您是否希望返回一个数组,因为相同的值可能会出现多次?

Update
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Update(byte JobId, JobWorker model) {
    If(ModelState.IsValid) {
        IList<Dto.Worker> newWorkers = model.Workers;

        // logic to update is here

        return RedirectToAction("Index", "Jobs");
    }
    return View(model);
}

答案 2 :(得分:0)

$。inArray返回一个位置,如果没有找到则返回-1否则返回&gt; = 0

  

$ .inArray()方法类似于JavaScript的原生.indexOf()   方法,因为它没有找到匹配时返回-1。如果   数组中的第一个元素与值匹配,$ .inArray()返回0

试试此代码

$('#message').on('keyup', function () {
    textbox_value = $(this).val();
    suggest_array_sample = ["#{person1}", "#{person2}", "#{person3}"];

    console.log($.inArray(textbox_value, suggest_array_sample));
});

答案 3 :(得分:0)

结合这里提出的想法后,这种方法对我有用

match_value = suggest_array.filter(function(result){
	    		
	    		if(textbox_value){
          		return textbox_value.search(result)>-1
        		}

        		else{
          		return false
        		}
	    	}) 
	    	
console.log(match_value);