找不到正确的数据

时间:2019-03-07 03:57:10

标签: javascript node.js

我执行了循环,循环中有一行与指定参数匹配。消息“确定”应出现。相反,我总是得到结果“否”。

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 ]

2 个答案:

答案 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)