我执行了循环,循环中有一行与指定参数匹配。消息“确定”应出现。相反,我总是得到结果“否”。
request(
{
url: 'http://localhost:5000/positions/get',
method: 'POST',
headers: headers
},
function (error, response, body) {
console.log('status: ' + response.statusCode)
if (response.statusCode) {
body = JSON.parse(body)
var formData = { Id: 75, Name: 'CEO' }
for (var i = 0; i < body.rows.length; i++ ) {
if (body.rows[i] === formData) {
console.log('Ок')
} else {
console.log('No')
}
}
}
}
)
答案:
> console.log(body.rows)
[ { Id: 1, Name: 'Engineer' }, ..., ... 61 more items ]
答案 0 :(得分:0)
if (body.rows[i] === formData) {
此行应该是(如果您只想检查ID)
if (body.rows[i].Id === formData.Id) {
或(如果要同时检查ID和名称)
if (body.rows[i].Id === formData.Id && body.rows[i].Name === formData.Name ) {
答案 1 :(得分:0)
如您所见
{ Id: 75, Name: 'CEO' } === { Id: 75, Name: 'CEO' } // return false
您应该在比较之前将其解析为字符串,因为它是一个对象
JSON.stringify({ Id: 75, Name: 'CEO' }) === JSON.stringify({ Id: 75, Name: 'CEO' }) // true
代码应为
if (JSON.stringify(body.rows[i]) === JSON.stringify(formData)) {
console.log('Ок')
} else {
console.log('No')
}
或者您可以使用lodash
进行快速比较
_.isEqual(body.rows[i], formData)