#javascript #arrays #json #object
#javascript #массивы #json #объект
Вопрос:
Мне нужно иметь возможность извлекать определенное значение из массива, чтобы иметь возможность использовать его в операторе IF для фильтрации данных в SQL. Моя цель — иметь возможность создавать что-то вроде этого
if(obj !== undefined){ //do something} else { //do something else }
Причина, по которой мне нужно это сделать, заключается в том, чтобы узнать, есть ли запись или нет в SQL, и это было единственное, что я мог придумать для этого. Чтобы проверить, возвращает ли он какие-либо значения при поиске по нему.
Код:
con.query("SELECT * FROM whitelisttest WHERE (identifier) = (?)", [messageArray[1]], function (err, result) {
if (err) throw err;
var person = JSON.stringify(result);
obj = JSON.parse(person);
test = obj.whitelisted;
console.log(result);
console.log(obj);
console.log(person);
console.log(test);
Результат журнала консоли:
[ RowDataPacket { identifier: 'etanol', whitelisted: 3 } ]
[ { identifier: 'etanol', whitelisted: 3 } ]
[{"identifier":"etanol","whitelisted":3}]
undefined
Ожидаемый результат для вывода, который в данный момент не определен и который в коде называется test, равен 3, и для результата, который будет etanol, если я это сделал.
test = obj.identifier
console.log(test)
Редактировать:
Решение, которое помогло мне (пропустил [0] при попытке выполнить obj.белый список, когда предполагалось, что это obj[0].белый список)
con.query("SELECT * FROM whitelisttest WHERE (identifier) = (?)", [messageArray[1]], function (err, result) {
if (err) throw err;
var person = JSON.stringify(result);
obj = JSON.parse(person);
console.log(obj[0].whitelited)
Комментарии:
1. не нужно делать
JSON.stringify
иJSON.parse
, чей метод противоположен, просто выполняйте напрямую :console.log(result[0].whitelited)
Ответ №1:
это массив console.log(Array.isArray(result) )
// => true
итак, ваш полный ответ должен быть :
con.query( "SELECT * FROM whitelisttest WHERE (identifier) = (?)"
, [messageArray[1]]
, function (err, result)
{
if (err) throw err;
console.log(result[0].whitelisted)
//...
нет необходимости использовать JSON.stringify
и then JSON.parse
var obj = [ { identifier: 'etanol', whitelisted: 3 } ];
console.log(' obj[0].whitelisted => ', obj[0].whitelisted); // => 3
var ref = 'whitelisted';
console.log(' obj[0][ref] => ', obj[0][ref]); // => 3
console.log(' obj[0]["whiteliste"] => ', obj[0]['whitelisted']); // => 3
Комментарии:
1. Ну да, но как я хочу иметь возможность использовать SQL, а не вводить массив вручную.
2. не уверен, что понимаю, но JS может принимать разные способы записи для доступа к содержимому json. (Я изменил свой пост, чтобы показать их)
3. Это помогло проверить edit на наличие решения. Спасибо. Пропустил [0]
Ответ №2:
Поскольку это массив, вам необходимо получить доступ к свойству whitelisted
первого элемента:
var person = [{
"identifier": "etanol",
"whitelisted": 3
}]
console.log(person[0].whitelisted);
Комментарии:
1. Ну, это убило бы саму идею использования SQL, если мне нужно вручную войти и добавить массив.