0

I have an object with duplicate key value pairs. I need to traverse it & evaluate index [0] only against a condition:

var cells = {"cells": [{"key": "-18", "key1": "-9", "key2": "-51", "key3": "23"}, {"key": 
"-18", "key1": "-9", "key2": "-51", "key3": "23"}, {"key": "-18", "key1": "-9", "key2": "-51", 
"key3": "23"}]};

My code so far:

var result = true;

if (cells instanceof java.util.List && !cells.isEmpty()) {
 for (var i = 0; i < cells.size(); i++) {
    var cell = cells.get(i);

    var key = cell.get("key");
    var primeKey = key.get[0];
    if (primeKey) {
        if (parseInt(primeKey) < 5) {
            result = false;
            break;
        }
    } else {
        result = false;
        break;
    }
}
} else {
result = false;
}

return result;

The error that I get is: Error encountered during evaluation: TypeError: Cannot read property "0.0" from undefined (#12)

Alex Mo
  • 131
  • 1
  • 2
  • 11
  • 3
    _"I have a nested JSON object"_ - No. That's an object with one property which is an array of objects -> [There's no such thing as a "JSON Object"](http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/), [What is the difference between JSON and Object Literal Notation?](https://stackoverflow.com/questions/2904131) – Andreas Jun 25 '21 at 15:48
  • 2
    `java.util.List` is this Java or JavaScript? – evolutionxbox Jun 25 '21 at 15:48
  • 1
    This looks like a mix of java and javascript… – James Jun 25 '21 at 15:49
  • 1
    That `.size()` looks more like Java then JavaScript – Andreas Jun 25 '21 at 15:50
  • @evolutionxbox It is a Java Interface: The Java List interface, java. util. List , represents an ordered sequence of objects. – Alex Mo Sep 17 '21 at 01:07

1 Answers1

0

var primeKey = key.get[0]; is nonsensical as the "key" value pair is not an array to be iterated. However, if we simply change the i iterator to index 0 like so var cell = cells.get(0); we can evaluate the condition against index 0 only. No need to traverse the entire nested loop as we are only comparing against index 0. See below for details:

var cells = {"cells": [{"key": "-18", "key1": "-9", "key2": "-51", "key3": "23"}, {"key": 
"-18", "key1": "-9", "key2": "-51", "key3": "23"}, {"key": "-18", "key1": "-9", "key2": "-51", 
"key3": "23"}]};

var result = true;

if (cells instanceof java.util.List && !cells.isEmpty()) {
 for (var i = 0; i < cells.size(); i++) {
    var cell = cells.get(0);

    var key = cell.get("key");
    if (primeKey) {
        if (parseInt(primeKey) < 5) {
            result = false;
            break;
        }
    } else {
        result = false;
        break;
    }
}
} else {
result = false;
}

return result;
Alex Mo
  • 131
  • 1
  • 2
  • 11