Algoritme saya berfungsi dengan benar ketika saya menerapkan objek palsu ke fungsi tetapi pada CodeWars terus gagal. Saya sangat ingin tahu tentang pemeriksaan apa yang saya lewatkan dalam kode saya. Saya percaya saya harus menggunakan ekspresi reguler tertentu tetapi saya sangat bingung. Berikut tautan ke masalah https://www.codewars.com/kata/ get-root-property-name

function getRootProperty(object, val) {
var valueFound = false;
let output = '';
 for (var first in object) {
 var seachObject = object[first]
  function query(object, val, rootName) {
    Object.getOwnPropertyNames(object).forEach((value) => {
      if (object[value] == val) {
        valueFound = true;
        output = rootName
        return
      } else {
        query(object[value], val, rootName)
      }
    })
}
  query(seachObject, val, first);
}

if (valueFound == false) {
   return null
} else {
   return output;
}

}
0
user6906805 10 Agustus 2017, 20:06

2 jawaban

Jawaban Terbaik

Anda juga dapat melakukan hal berikut;

function findRootProperty(o,x,p = this){
  return Object.keys(o)
               .reduce((r,k) => Array.isArray(o[k]) ? o[k].includes(x) ? r.concat(k)
                                                                       : r
                                                    : r.concat(findRootProperty(o[k],x,k)),[])
               .map(q => p === this ? q : p );
}

object = {
    "r1n": {
        "mkg": {
            "zma": [21, 45, 66, 111],
            "mii": {
                "ltf": [2, 5, 3, 9, 21]
             },
             "fv": [1, 3, 6, 9]
         },
         "rmk": {
             "amr": [50, 50, 100, 116, 150, 250]
         }
    },
    "fik": {
        "er": [592, 92, 32, 13],
        "gp": [12, 34, 116, 29]
    }
};

console.log(findRootProperty(object,116))
0
Redu 11 Agustus 2017, 08:06