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);

}
}