TLDR;
有什么方法可以只知道元素的开头或包含什么来使用$.inArray
?
我有一个元素数组,我希望能够选择一个以某个字符串开头的元素,因为该值是动态的。
例如:
我的数组是:
array = ["Alpha_GB8732", "Beta_GB29834", "Gamma_GB2384", "Delta_GB23984"]
但是对于每个用户,顺序和确切名称可能会更改。
使用jQuery,如果我知道确切的值,则可以执行以下操作来获取元素。
var order = $.inArray("Alpha_GB8732", array)
$item = $(array).get(order)
但是,由于GB加载后页面上每个元素的所有内容都发生了变化,因此我无法使用它,因为我不知道确切的字符串。
是否只有知道元素以什么开头或包含什么,才能使用$.inArray
?
非常感谢您所有的帮助人员!我真的很感激。
最后,对我来说最好的答案是路易斯的回应:
let array = ["Alpha_GB8732", "Beta_GB29834", "Gamma_GB2384", "Delta_GB23984"]
let result = array.filter((el) => el.includes("Alpha_GB") === true);
console.log(result);
起初这对我不起作用...因为gulp-uglify
由于某种原因无法编译 es6 脚本。因此,对于在编译时可能遇到相同问题的任何人,这都是一样的东西,但在 es5 中:
array = ["Alpha_GB8732", "Beta_GB29834", "Gamma_GB2384", "Delta_GB23984"]
var result = array.filter(function (el) {
return el.includes("Alpha_GB") === true;
});
console.log(result);
再次感谢大家的帮助! (@ Louis,@ ControlAltDel)
答案 0 :(得分:1)
您可以使用过滤器,例如
array = ["Alpha_GB8732", "Beta_GB29834", "Gamma_GB2384", "Delta_GB23984"]
var find = array.filter(function(item) {
return (this === "Alpha_GB8732");
});
find = (find.length > 0) ? find[0] : null;
答案 1 :(得分:1)
基于ControlAltDel的注释,可以使用Array.filter()。请参见下面的示例;
let array = ["Alpha_GB8732", "Beta_GB29834", "Gamma_GB2384", "Delta_GB23984"]
let result = array.filter((el) => el.includes("Alpha_GB") === true);
console.log(result);
// You could turn this in to a function
function arrayContains(arr, str){
return arr.filter((el) => el.includes("Alpha_GB") === true).length > 0;
}
console.log(arrayContains(array, 'Alpha_GB')); // returns true
// And use it like this
//if(arrayContains(array, 'Alpha_GB')){}...
答案 2 :(得分:1)
因此您需要根据数组中的某些字符过滤掉数组,这是它的工作方式:
const MyArray = ["Alpha_GB8732", "Beta_GB29834", "Gamma_GB2384", "Delta_GB23984"]
//you can replace .startswith() with any function that you might need. you can also apply .toLowerCase() to filter case-insensitive items
const filteredArray = MyArray.filter((x) => x.startsWith("N"));
console.log(filteredArray);
希望有帮助!