【问题标题】:compare two json in a promise比较 promise 中的两个 json
【发布时间】:2020-06-11 10:41:31
【问题描述】:

您好,我需要比较一个数组内的两个 json 对象,它是一个有两个参数的函数(两个 json 数组),我需要比较这些数组并验证两个字段何时相等(名为 domainLogin 的属性),然后推送一个json的字段(evaluo ='true'),这是我拥有的代码:

 function CompararEvaluadores(todos, evaluo) {



            for (i = 0; i < todos.length; i += 1) {
                for (J = 0; J < evaluo.length; J += 1) {
                    if (todos[i].DomainLogin === evaluo[J].domainLogin) {
                        todos[i].push({ evaluo: 'true' })
                    }

                }

            }


    }

dosent 工作,请一些帮助,我是 nodejs 的新手,谢谢....

【问题讨论】:

  • dosent work 不是对问题的有用描述。您期望会发生什么? 实际上会发生什么?这些有何不同?是否显示任何错误?
  • 你正在使用async new Promise 这是毫无意义的nesting promises
  • 就此而言,您一开始并没有在代码中执行任何异步操作。首先使用 Promise 似乎没有任何意义。
  • 请参考How to Ask
  • 您也有隐式全局变量,这只是自找麻烦(尤其是如果您的代码实际上是异步的)。你应该声明你的变量和use strict mode

标签: javascript node.js


【解决方案1】:

我假设您想将 true 附加到每个对象,对吗?你应该这样做:

async function CompararEvaluadores(todos, evaluo) {

            return new Promise((resolve, reject) => {
                // console.log(valor2)
                for (i = 0; i < todos.length; i += 1) {
                    for (J = 0; J < evaluo.length; J += 1) {
                        if (todos[i].DomainLogin === evaluo[J].domainLogin) {
                            todos[i].evaluo = true
                        }

                    }

                }
                console.log(todos)
                resolve(todos)
            })
        }

另一种方法是:

async function CompararEvaluadores(todos, evaluo) {

            return new Promise((resolve, reject) => {
                var result = todos.map(elem=>(evaluo.some(elem2=>elem.DomainLogin === elem2.domainLogin) ? {...elem,evaluo:true} : elem))
                return resolve(result);
            })
        }

你必须像这样使用它:

var callFunction = async(todos,evaluo)=>
{
  var todos = await CompararEvaluadores(todos,evaluo);
  // use todos
}

【讨论】:

  • 投稿,不加字段,字段名称为evaluo=true
  • 所以你想添加一个布尔值而不是字符串?我编辑了代码。
  • 你所说的“更好的方法”是什么意思?
  • 我从节点开始,我尝试了很多方法,但都不行
  • 更新的代码,如果有效,请检查并接受作为答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 2020-07-22
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多