Ich habe
var tab = {
abc:1,
def:40,
xyz: 50
}
Ich möchte den Namen von abc, def, xyz in etwas anderes ändern, ist das möglich?
Ich habe es versucht
const test = Object.keys(tab).map(key => {
if (key === 'abc') {
return [
a_b_c: tab[key]
]
}
});
console.log(test);
Ich habe viele undefinierte Schlüssel.
So habe ich es gelöst. Ich habe eine Map verwendet, um eine Zuordnung zwischen dem vorhandenen und einem neuen Schlüssel vorzunehmen. Ersetzen Sie die Karte einfach durch die neuen Werte, die Sie benötigen. Entfernen Sie schließlich die vorherigen Schlüssel aus dem Objekt mit omit
.
var tab = {
abc:1,
def:40,
xyz: 50
}
var map = {
abc : "newabc",
def : "newdef",
xyz : "newxyz"
}
_.each(tab, function(value, key) {
key = map[key] || key;
tab[key] = value;
});
console.log(_.omit(tab, Object.keys(map)));
Hier ist der vollständige Code zum Ersetzen von Schlüsseln basierend auf einem Objekt, das die zu ersetzenden Werte abbildet:
const tab = {abc: 1, def: 40, xyz: 50};
const replacements = {'abc': 'a_b_c', 'def': 'd_e_f'};
let replacedItems = Object.keys(tab).map((key) => {
const newKey = replacements[key] || key;
return { [newKey] : tab[key] };
});
Dadurch wird ein Array mit drei Objekten ausgegeben, bei denen Schlüssel ersetzt werden. Wenn Sie daraus ein neues Objekt erstellen möchten, gehen Sie einfach wie folgt vor:
const newTab = replacedItems.reduce((a, b) => Object.assign({}, a, b));
Dies gibt aus: {"a_b_c": 1, "d_e_f": 40, "xyz": 50}
let tab = {
abc: 1,
def: 40,
xyz: 50
}
const map = {
abc: "newabc",
def: "newdef",
xyz: "newxyz"
}
// Change keys
_.mapKeys(tab, (value, key) => {
return map[value];
});
// -> { newabc: 1, newdef: 40, newxyz: 50 }
Hier ist eine Möglichkeit, die Zuordnungs- und Pfeilfunktionen zu dekonstruieren.
const rename = (({abc: a_b_c, ...rest}) => ({a_b_c, ...rest}))
console.log(rename({abc: 1, def: 2}))
// { "a_b_c": 1, "def": 2 }
Mit lodash ist das einfach.
import { mapKeys } from 'lodash';
const tab = {
abc: 1,
def: 40,
xyz: 50
};
const test = mapKeys(tab, (value, key) => {
if (key === 'abc') return 'a_b_c';
return key;
});
Sie können den neuen Schlüssel hinzufügen und den alten löschen.
var tab = {
abc:1,
def:40,
xyz: 50
}
var key = 'abc'
console.log(key)
tab['a_b_c'] = tab[key]
delete tab[key]
console.log(tab);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
Der kürzeste Weg, den ich bisher gefunden habe:
const tab = {abc: 1, def: 40, xyz: 50};
const {'abc': 'a_b_c', 'def': 'd_e_f', ...rest} = tab;
tab = {'a_b_c', 'd_e_f', ...rest}
Hatte gerade einen ähnlichen Anwendungsfall und konnte ihn lösen.
const options = {
method: "POST", // *GET, POST, PUT, DELETE, etc.
...
body: JSON.stringify({}) // body data type must match "Content-Type" header
}
window.fetch(url,{
...options,
...{ method: "PUT", body: JSON.stringify(plot) }
})