Próbuję uzyskać funkcjonalność jak PHP w JavaScript / Jquery, gdzie przekazujemy adres wartości (& $ Value) i edytować jego wartość w rzeczywistej strukturze tablicy w PHP. Na przykład mam obiekt w poniższym formacie,

var obj = {
    "first": "first value",
    "second": "second value",
    "third": "third value",
    "fourth": {
        "a": "good word",
        "b": "bad word"
    }
}

Array / obiekt może być pojedynczy lub wielowymiarowy. I chcę iterować przez określoną strukturę tablicy / obiektu i zmodyfikować go i zwrócić rzeczywistą strukturę.

var obj = {
    "first": "modified value",
    "second": "second value",
    "third": "third value",
    "fourth": {
        "a": "good word",
        "b": "censored word"
    }
}

Z góry dziękuję!

1
Mohammed Sadik 21 listopad 2013, 11:18

2 odpowiedzi

Najlepsza odpowiedź

Niniejsze rekurencyjnie stosuje funkcję do obiektu zagnieżdżonego:

transform = function(obj, fun) {
    if (typeof obj != "object")
        return fun(obj);
    Object.keys(obj).forEach(function(k) {
        obj[k] = transform(obj[k], fun);
    });
    return obj;
}

Stosowanie:

transform(yourData, function(val) {
    if (val.replace)
        return val.replace(/bad/g, "censored");
    else
        return val;
})
1
georg 21 listopad 2013, 09:14

Możesz iterować za pomocą obiektu JS z w pętli.

Oto przykład z dokumentów:

var o = {a:1, b:2, c:3};

function show_props(obj, objName) {
  var result = "";

  for (var prop in obj) {
    result += objName + "." + prop + " = " + obj[prop] + "\n";
  }

  return result;
}

alert(show_props(o, "o")); /* alerts: o.a = 1 o.b = 2 o.c = 3 */
0
SomeKittens 21 listopad 2013, 07:21