我正在尝试查找与我在下面提供了代码段的数组匹配的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()
,还是需要更改代码。
答案 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);