gpt4 book ai didi

javascript - 过滤以JS开头的值

转载 作者:行者123 更新时间:2023-12-01 00:06:10 26 4
gpt4 key购买 nike

我尝试搜索某个值是否作为第一个单词存在。例如:“我的名字是 James”,如果我搜索“nam”=> true,如果我搜索“ja”=> true,如果我搜索“ame”则为 false。它的逻辑有效,但我最后没有收到任何元素。

let text = 'ame';
let option_location = [
{"text": "James"},
{"text": "Valkar"},
{"text": ""},
{"text": "James2"},
];


// This works but not as I wanted
let itemsLocation = '';
itemsLocation = option_location.filter(item => item.text.includes('ame'));
console.log('Values', itemsLocation);

// This is not working
let itemsLocation2 = '';
itemsLocation2 = option_location.filter(item =>{
item.text = item.text.toLowerCase();
let words = item.text.split(" ");
words.forEach((element,index) => {
if(element.startsWith(text)){
return true;
}else{
return false;
}
});
});
console.log('Values', itemsLocation2);

最佳答案

使用return Words.some(...)而不是forEach。返回 forEach 不会对传递给 filter 的函数结果执行任何操作。

forEach 中的返回值仅从 forEachtrue/false 值的一次迭代中返回被扔掉了。它不会立即将结果返回到过滤器的谓词。

this.itemsLocation2 = this.option_location.filter(item =>{
item.text = item.text.toLowerCase();
let words = item.text.split(" ");
words.forEach((element,index) => {
if(element.startsWith(text)){
return true; // returns from one forEach iteration, not from filter.
}else{
return false; // returns from one forEach iteration, not from filter.
}
});
});

改用这样的技术:

let text = 'My name is James';

let searches = ['nam', 'ja', 'ame'];

let words = text.toLowerCase().split(" ");
for(let searchTerm of searches) {
let found = words.some(w => w.startsWith(searchTerm));
console.log(`${searchTerm} => ${found}`);
}

关于javascript - 过滤以JS开头的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60378860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com