javascript - 如何将值添加到map函数内部的对象中?

标签 javascript node.js

我正在使用map函数来迭代一个对象。但在一种情况下我必须使用嵌套 map 功能。我尝试向映射函数内的空对象添加值,但不是添加值而是替换它。谁能帮我解决这个问题吗?

// object stores final results
let valid_data={}
//object to iterate
let test_cases = { 
sample:
   [ { test_case_no: 1,
       test_case_description: 'user-status active - response 200',
       value: 'active',
       response_code: 200,
       valid: 'yes' },
     { test_case_no: 2,
       test_case_description: 'user-status inactive - response 200',
       value: 'inactive',
       response_code: 200,
       valid: 'no' },
     { test_case_no: 3,
       test_case_description: ' inappropriate user-status - response 400',
       value: 'notAdmin',
       response_code: 400,
       valid: 'no' } ],
     sample1: [ { obj1: [Array], obj2: [Array], test_case_no: 4 } ] 
}

//my code to iterate an object

Object.entries(test_cases).map((property) => {
    const field_name = property[0]
    const field_definition = property[1]

    Object.entries(field_definition).map((property) => {
        if (property[1].valid != 'yes' && property[1].valid != 'no') {
            Object.entries(field_definition).map((property) => {
                Object.entries(property[1]).map((propertyy) => {
                    Object.entries(propertyy[1]).map((property) => {
                        nested_data = []
                        nested_value = {}
                        if (property[1].valid == 'yes') {
                            nested_value[propertyy[0]] = property[1].value
                            nested_data.push(Object.assign({}, nested_value))
                            valid_data[field_name] = (Object.assign({}, nested_value))
                        }
                    })
                })
            })
        }
        else if (property[1].valid == 'yes') {
            valid_data[field_name] = property[1].value;
        }
    })
})

console.log(valid_data);

实际结果:

“{ sample: 'active',
 sample1: { obj2: 2019-07-01T09:50:46.266Z } }” 

预期结果:

“{ sample: 'active',
 sample1: [{ obj1: 2019-07-01T09:50:46.266Z,obj2: 2019-07-01T09:50:46.266Z }] }”

最佳答案

代码中的 var 初始化错误。 尝试这个循环:

Object.entries(test_cases).map((property) => {
    const field_name = property[0]
    const field_definition = property[1]

    Object.entries(field_definition).map((property) => {
        if (property[1].valid != 'yes' && property[1].valid != 'no') {
            nested_value = {}
            Object.entries(property[1]).map((propertyy) => {

                Object.entries(propertyy[1]).map((property) => {

                    if (property[1].valid == 'yes') {
                        nested_value[propertyy[0]] = property[1].value;
                        valid_data[field_name] = (Object.assign({}, 
                        nested_value))
                    }
               })
            })
        } else if (property[1].valid == 'yes') {
            valid_data[field_name] = property[1].value;
        }
    })
});

Working jsfiddle

关于javascript - 如何将值添加到map函数内部的对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56833805/

相关文章:

javascript - 如何使用回调从带有 node.js 和 ejs 的 mysql 中获取数据?

javascript - 类型错误 : e is not defined - when trying to use JQuery each to step through images within a div

node.js - 将Node App分成不同的文件

javascript - ES6/7等同于underscore的range函数

javascript - CSS 动画中的非动画帧序列

node.js - Node_redis hgetall 回调函数上的 Coffeescript 变量范围

javascript - 在 Node 服务器中使用 JQuery - TypeScript

javascript - 只显示checked=true的元素

javascript - 获取 Javascript div 在出现时滑出

javascript - 在 addEventListener 中传递参数