Javascript: как проверить, существует ли конкретный ключ или нет - PullRequest
0 голосов
/ 13 ноября 2018

Я получаю ответ по вызову API. что так.

[{"id":213132},{"id":241132},{"id":465413},{"id":546351},{"id":164854,"data":[{"rate" : 20}]},
{"id":564656,"data":[{"rate" : 40}]}]

Как проверить, что для определенного идентификатора существует ключ data или нет?

Любая помощь будет великолепна. Спасибо.

Ответы [ 6 ]

0 голосов
/ 13 ноября 2018

вы можете использовать функцию findIndex, чтобы найти конкретный идентификатор

let id = 241132;
let index = arr.findIndex((data)=> data.id == id)
index==-1 ? console.log("not find") : console.log("find index=>"+index)
0 голосов
/ 13 ноября 2018

Вы можете просто использовать Array.some () , он будет возвращать логическое значение, основанное на условии.

let arr=  [{"id":213132},{"id":241132},{"id":465413},{"id":546351, "data":[{"id":1}]},{"id":164854}];

let id = 546351;
console.log(arr.some(obj => obj.id == id && !!obj.data));

id = 213132;
console.log(arr.some(obj => obj.id == id && !!obj.data));
0 голосов
/ 13 ноября 2018
let id = 164854;
result = myArray.filter((val) => {return val.id === id && val.data;});
0 голосов
/ 13 ноября 2018

Вы можете использовать «Array.find», чтобы проверить, существует ли идентификатор, а затем вы можете преобразовать результат в логическое значение, используя «!!»

var arr = [{"id":213132},{"id":241132},{"id":465413},{"id":546351},{"id":164854,"data":[{"rate" : 20}]}]


function doesDataExist(id) {
   return !!arr.find(d => d.id == id).data
}

console.log(doesDataExist(164854))

console.log(doesDataExist(213132))
0 голосов
/ 13 ноября 2018

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

 let data = [{"id":213132},{"id":241132},{"id":465413},{"id":546351},{"id":164854,"data":[{"rate" : 20}]} ];
    function hasData(key) { return !!data.filter(x=> x.id==key)[0].data }
    console.log(hasData("213132"))
    console.log(hasData("164854"))
0 голосов
/ 13 ноября 2018

Вы можете сначала использовать Array.find(), чтобы получить объект с нужным идентификатором, а затем проверить, является ли свойство data неопределенным или нет

const myArray = [{"id":213132},{"id":241132},{"id":465413},{"id":546351},{"id":164854,"data":[{"rate" : 20}]}];

function hasData(id) {
  const myObject = myArray.find(x => x.id === id);
  return typeof myObject !== "undefined" && typeof myObject.data !== "undefined"; 
}

console.log(hasData(164854));
console.log(hasData(241132));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...