Javascript 如何将字符串与数组中对象的值进行比较
我想检查一个字符串是否与对象数组中的另一个字符串匹配 这是我的密码Javascript 如何将字符串与数组中对象的值进行比较,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我想检查一个字符串是否与对象数组中的另一个字符串匹配 这是我的密码 let myArr = [{title: "fruits"}, {title: "vegetables"}]; //I want to match a string with the 'title' of the objects var str = "string"; if ( myArr[i].title == str) { //Do something } 你可以用- let match = false my
let myArr = [{title: "fruits"}, {title: "vegetables"}];
//I want to match a string with the 'title' of the objects
var str = "string";
if ( myArr[i].title == str) {
//Do something
}
你可以用-
let match = false
myArr.forEach(function(element){
if(element.title === str){
match = true;
}
});
第一件事。
请避免将Let myVariable
上的大写字母改为Let myVariable
。还考虑使用<代码> const <代码>代替<代码>让< /代码>不改变变量:
现在,要回答您的问题,您可以使用some
方法。大概是这样的:
const myArr = [{title: "fruits"}, {title: "vegetables"}];
const str = 'fruits';
console.log('Exist?', myArr.some((obj)=>obj.title===str));
// This will output Exist? true
使用ES6
let myArr=[{title:“水果”},{title:“蔬菜”}];
const checkTitle=obj=>obj.title==‘水果’;
//检查是否找到了
如果((myArr.some(checkTitle))){
//在这里做你的事
log(“它存在,yay”)}
使用for循环-->
let myArr=[{title:“水果”},{title:“蔬菜”}];
让str=“string”;
for(设i=0;i
由于您显然已经在使用ES6,因此最惯用的方法是使用数组。在映射之后包括ping数组:
let myArr=[{title:“水果”},{title:“蔬菜”}];
var str=“string”;
让match=myArr.map(obj=>obj.title).includes(str);
控制台日志(匹配)代码>我会使用或与一起使用将值转换为布尔值之前的代码>:
constmyarr=[{title:'水果'},{title:'蔬菜'}];
log(myArr.some({title}=>title=='fruits');
console.log(!!myArr.find({title}=>title==='fruits')代码>您可以循环遍历数组元素并将它们与str进行比较
var myArr = [{title: "fruits"}, {title: "vegetables"}];
var str = "string";
for (i=0;i<myArr.length;i++){
if (myArr[i].title===str){
console.log(true);
}
else {
console.log(false);
}
}
var myArr=[{title:“水果”},{title:“蔬菜”}];
var str=“string”;
对于(i=0;i我在我的代码中使用它,并且从我身上完美地工作
var fruitsObj=myArr.find(element=>element.title==“fruits”)
您将获得包含标题水果的对象
{title:“fruits”}
在您的情况下。它的let
而不是let
,而i
的值是什么?为了让这个冲刺更有趣,您是否只希望匹配项的“真”/“假”输出或索引在数组内或匹配对象本身内?您是在寻找精确匹配还是部分匹配?这里的所有答案都非常有效。感谢所有人的帮助…太晚了:)6分钟前发布但分解任务添加了某些字符。您正在创建数组副本,只是为了查看是否包含项。。。我会直接使用Array.prototype.some()
或Array.prototype.find()
。@jo\u va这是合理的批评。但我怀疑这是否重要,除非你打算使用一个巨大的数组(比如在数千个对象中)。我发现包括
和映射
更具可读性,因为它更清楚您在做什么,。有些
更通用,您必须查看传递给它的函数的详细信息,以了解发生了什么。当然,在这种情况下,这很容易,但这是一种小的“精神税”,最好避免。我也投票赞成“一些”解决方案,因为在我看来它更简洁、优雅,但奇怪的是,“地图+包括”的作品,这当然不会改变我的观点。很有趣,谢谢。我总是对这样的测试有点怀疑,但实际上我并不感到惊讶。我希望JS引擎专门针对。includes
——以及使用map
创建新数组的开销进行优化,正如我所说的,这很可能只在更大的数组中才会变得明显。请描述您更改了什么以及为什么更改,以帮助其他人识别问题并理解此答案
let myArr = [{title: "fruits"}, {title: "vegetables"}];
let str = "string";
for(let i=0; i < myArr.length; i++) {
if (myArr[i].title === str) {
return true;
}
}
var myArr = [{title: "fruits"}, {title: "vegetables"}];
var str = "string";
for (i=0;i<myArr.length;i++){
if (myArr[i].title===str){
console.log(true);
}
else {
console.log(false);
}
}