Каратэ - чтобы найти индексы массива множественного вхождения элемента в массиве ответов JSON - PullRequest
1 голос
/ 19 апреля 2020

У меня есть ответ JSON от конечной точки, который дает мне вложенный массив элементов. И учитывая входное значение, я хочу выяснить все значения индекса, где это значение встречается, а не только первое вхождение элемента.

Например, вот мой ответ:

{
    "items": [
        {
            "vin": "MMTestingVIN00002",
            "dealerCode": "1",
            "nmscCode": "1",
            "warning": {
                "warningLightType": {
                    "code": 1,
                    "description": "",
                    "symbol": "OLW",
                    "type": "S",
                    "priority": "1"
                }
            }
        },
        {
            "vin": "HESQM0IBWUR7DH0DU",
            "dealerCode": "1",
            "nmscCode": "1",
            "warning": {
                "warningLightType": {
                    "code": 1,
                    "description": "",
                    "symbol": "OLW",
                    "type": "S",
                    "priority": "1"
                }
            }
        },
        {
            "vin": "MMTestingVIN00002",
            "dealerCode": "1",
            "nmscCode": "1",
            "warning": {
                "warningLightType": {
                    "code": 1,
                    "description": "",
                    "symbol": "OLW",
                    "type": "S",
                    "priority": "1"
                }
            }
        },
        {
            "vin": "ZCADWKEQM1GEADEQR",
            "dealerCode": "1",
            "nmscCode": "1",
            "warning": {
                "warningLightType": {
                    "code": 1,
                    "description": "",
                    "symbol": "WASH",
                    "type": "S",
                    "priority": "1"
                }
            }
        },
        {
            "vin": "H5QGE06R54B8KYOUV",
            "dealerCode": "1",
            "nmscCode": "1",
            "warning": {
                "warningLightType": {
                    "code": 1,
                    "description": "",
                    "symbol": "WASH",
                    "type": "S",
                    "priority": "1"
                }
            }
        }
    ]
}

Я хочу узнать индексы, где встречаются массивы с "vin = MMTestingVIN00002".

Я смотрел https://github.com/intuit/karate/blob/master/karate-junit4/src/test/java/com/intuit/karate/junit4/demos/js-arrays.feature за идеи. Также посмотрел на другие ответы SO и попробовал:

* def VIN = 'MMTestingVIN00002'
* def response = result.items
* def names = $[*].vin
* def index = names.indexOf(VIN)
* print index

Это дает единственное первое вхождение с индексом 0. В идеале я хочу индекс массива результатов [], который дает [0,2] как результат.

1 Ответ

1 голос
/ 19 апреля 2020

Здесь вы go:

* def indexes = []
* def fun = function(x, i){ if (x.vin == 'MMTestingVIN00002') karate.appendTo(indexes, i) }
* karate.forEach(response.items, fun)
...