Как сравнить строку со значением объекта в массиве - PullRequest
0 голосов
/ 18 апреля 2019

Я хочу проверить, соответствует ли строка другой строке в массиве объектов.

Вот мой код

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 
}

Ответы [ 9 ]

4 голосов
/ 18 апреля 2019

обо всем по порядку.Избегайте заглавной буквы на Let myVariable просто let myVariable.Также рассмотрите возможность использования const вместо let для неизменения переменных :) Теперь, чтобы ответить на ваш вопрос, вы можете использовать метод some.Как то так:

const myArr = [{title: "fruits"}, {title: "vegetables"}];
const str = 'fruits';
console.log('Exist?', myArr.some((obj)=>obj.title===str));
// This will output Exist? true
1 голос
/ 18 апреля 2019

Использование ES6

   let myArr = [{title: "fruits"}, {title: "vegetables"}];
    
    const checkTitle = obj => obj.title === 'fruits';
    
    //check if it is found
    if((myArr.some(checkTitle))){
    //do your stuff here
    console.log("it exists, yay")}
1 голос
/ 18 апреля 2019
let myArr = [{ title: "fruits" }, { title: "vegetables" }];
var str = "string";
if (myArr.find(a => a.title == str) != null) {
    console.log('aaa');
}
0 голосов
/ 18 апреля 2019

Я использую его в своем коде и отлично от меня работаю

var fruitsObj = myArr.find(element => element.title == "fruits")

Вы получите объект, который содержит титульный плод, который в вашем случае равен {title: "fruits"}.

0 голосов
/ 18 апреля 2019

Вы можете просто пройтись по элементам массива и сравнить их с 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);

}
}
0 голосов
/ 18 апреля 2019

Я бы использовал Array.prototype.some () или Array.prototype.find () с !!, прежде чем превратить значение в логическое значение:

const myArr = [ { title: 'fruits' }, { title: 'vegetables' } ];

console.log(myArr.some(({ title }) => title === 'fruits'));
console.log(!!myArr.find(({ title }) => title === 'fruits'));
0 голосов
/ 18 апреля 2019

Поскольку вы явно уже используете ES6, самый идиоматичный способ - использовать Array.includes после map проверки связи с массивом:

let myArr = [{title: "fruits"}, {title: "vegetables"}];

var str = "string";

let match = myArr.map(obj => obj.title).includes(str);

console.log(match);
0 голосов
/ 18 апреля 2019

читать каждый элемент заголовка массива, используя цикл for ->

let myArr = [{title: "fruits"}, {title: "vegetables"}];

let str = "string";
for(let i=0; i < myArr.length; i++) {
    if (myArr[i].title === str) {
          return true;
    }
}
0 голосов
/ 18 апреля 2019

Вы можете использовать -

let match = false
myArr.forEach(function(element){
    if(element.title === str){
        match = true;
    }
});
...