Как добавить значения из одного массива в другой массив в JavaScript - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь добавить значения из массива ниже в другой массив

[
    {"criteriaName": "CRITERIA 1"},
    {"criteriaType": "Dependent"},
    {"table": "Table1"},
    {"column": "Column1"},
    {"joinType": "OR"},
    {"operator": ">="},
    {"valueType": "SQL"},
    {"dataType": "NUMBER"},
    {"format": "Config"},
    {"parameterMandatory": "YES"},
    {"link": "KB"},
    {"sequence": "SEQ1"},
    {"value": "VAL"},
    {"description": "abcde"}
]

Из приведенного выше массива япытаясь добавить каждое значение к вложенному объекту ниже.

Необходимо добавить каждое значение из вышеуказанного массива для каждой модели в массиве ниже Нижеследующее является целевым массивом.

Я пытался добавить указанные выше значения массива к приведенным ниже

formFields = [
    {
        "title": "Criteria Details",
        "columns": 2,
        "fields": {
            "criteriaName": {
                "type": "text",
                "label": "Criteria Name",
                "id": 'criteriaName',
                "model": "",
                "required": true,
                "show": true,
                "rules": [
                    v => !!v || 'Criteria Name is required',
                ]
            },
            "criteriaType": {
                "type": "select",
                "label": "Criteria type",
                "id": "criteriaType",
                "options": ['Dependent', 'Independent', 'Static'],
                "model": "",
                "required": true,
                "rules": [
                    v => !!v || 'Criteria Type is required',
                ],
                "show": true,
            },
            "table": {
                "type": "select",
                "label": "Table",
                "id": "table",
                "options": ["Table1"],
                "model": "",
                "required": true,
                "rules": [
                    v => !!v || 'Table is required',
                ],
                "show": true,
            },
            "column": {
                "type": "select",
                "label": "Column",
                "id": "column",
                "options": ["Column1"],
                "model": "",
                "required": true,
                "rules": [
                    v => !!v || 'Column is required',
                ],
                "show": true,
            },
            "joinType": {
                "type": "select",
                "label": "Join Type",
                "id": "joinType",
                "options": ["AND", "OR"],
                "model": "",
                "required": true,
                "rules": [
                    v => !!v || 'Join Type is required',
                ],
                "show": true,
            },
            "operator": {
                "type": "select",
                "label": "Operator",
                "id": "operator",
                "options": ["<", "<=", "<>", "=", ">=", ">", "EXISTS", "IN", "IS NOT NULL", "NULL", "LIKE", "NOT EXISTS", "NOT IN", "NOT LIKE"],
                "model": "",
                "required": true,
                "rules": [
                    v => !!v || 'Operator is required',
                ],
                "show": true,
            },
            "valueType": {
                "type": "select",
                "label": "Value Type",
                "id": "valueType",
                "options": ["Dependent SQL", "SQL", "VALUE"],
                "model": "",
                "required": true,
                "rules": [
                    v => !!v || 'Value Type is required',
                ],
                "show": true,
            },
            "dataType": {
                "type": "select",
                "label": "Data Type",
                "id": "dataType",
                "options": ["DATE", "NUMBER", "STRING"],
                "model": "",
                "required": true,
                "rules": [
                    v => !!v || 'Data Type is required',
                ],
                "show": true,
            },
            "format": {
                "type": "text",
                "label": "Format",
                "id": "format",
                "model": "",
                "required": false,
                "show": true,
            },
            "parameterMandatory": {
                "type": "select",
                "label": "Parameter Mandatory",
                "id": "parameterMandatory",
                "options": ["NO", "YES"],
                "model": "",
                "required": true,
                "rules": [
                    v => !!v || 'Parameter Mandatory is required',
                ],
                "show": true,
            },
            "link": {
                "type": "select",
                "label": "Link",
                "id": "link",
                "options": ["KB"],
                "model": "",
                "required": false,
                "show": true,
            },
            "sequence": {
                'type': "text",
                "label": "Sequence",
                "id": "sequence",
                "model": "",
                "required": true,
                "rules": [
                    v => !!v || 'Sequence is required',
                ],
                "show": true,
            },
            "value": {
                "type": "description_notes",
                "label": "Value",
                "id": "value",
                "model": "",
                "required": true,
                "rules": [
                    v => !!v || 'Value is required',
                ],
                "show": true,
            }
        }
    },
    {
        'title': "Notes",
        "columns": 1,
        "fields": {
            "description": {
                "type": "description_notes",
                "label": "Description",
                "id": "description",
                "required": false,
                "model": '',
                "show": true,
            }
        }
    }
]

как мне этого добиться?

Спасибо ..

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Я считаю, что это то, что вы хотите:

yourFirstArray.forEach(function(e){
    formFields.forEach(function(fF){
        var firstKey = Object.keys(e)[0]; // taking first key of each object in your first array (0)
        fF[firstKey] = e[firstKey];
    })
})
0 голосов
/ 28 ноября 2018

Решение:

var temp = modelValues.reduce((acc, modelValue) => Object.assign({}, acc, modelValue), {});
Object.keys(temp).forEach(key => formFields[key].model = temp[key])

Примечание: modelValues ​​- это ваш массив

Но я рекомендую изменить вашу структуру следующим образом?

var modelValues = {
    criteriaName: "CRITERIA 1",
    criteriaType: "Dependent",
    table: "Table1",
    column: "Column1",
    joinType: "OR",
    operator: ">=",
    valueType: "SQL",
    dataType: "NUMBER",
    format: "Config",
    parameterMandatory: "YES",
    link: "KB",
    sequence: "SEQ1",
    value: "VAL",
    description: "abcde"
};

и сделать это для сопоставления значений

Object.keys(modelValues).forEach(key => formFields[key].model = modelValues[key])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...