我有
var tab = {
abc:1,
def:40,
xyz: 50
}
我想将abc,def,xyz的名称更改为其他内容,是否可能?
我试过
const test = Object.keys(tab).map(key => {
if (key === 'abc') {
return [
a_b_c: tab[key]
]
}
});
console.log(test);
我有很多未定义的键。
答案 0 :(得分:5)
以下是基于映射要替换的值的对象替换键的完整代码:
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] };
});
这将输出一个包含三个对象的数组,其中键被替换。如果你想从中创建一个新对象,只需:
const newTab = replacedItems.reduce((a, b) => Object.assign({}, a, b));
输出:{"a_b_c": 1, "d_e_f": 40, "xyz": 50}
答案 1 :(得分:3)
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 }
答案 2 :(得分:2)
到目前为止我发现的最短的方法:
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}
答案 3 :(得分:0)
您可以添加新密钥并删除旧密钥。
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>
答案 4 :(得分:0)
这是解构分配和箭头功能的一种方法。
const rename = (({abc: a_b_c, ...rest}) => ({a_b_c, ...rest}))
console.log(rename({abc: 1, def: 2}))
// { "a_b_c": 1, "def": 2 }
答案 5 :(得分:0)
只有一个类似的用例,并且能够解决它。
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) }
})
答案 6 :(得分:0)
你可以使用 ES6 解构。例如,您可以执行以下操作:
let sample = {a:1,b:2,c:3}
let {a:pippo,...rest} = sample
sample={pippo,...rest}
答案 7 :(得分:-1)
希望这会有所帮助
初始数据:
let tab = {
abc: 1,
def: 40,
xyz: 50
};
新密钥映射:
let newKeyMappings = {
abc: 'cab',
def: 'fed',
xyz: 'zyx'
};
使用新密钥映射值
let mapped = Object.keys(tab).map(oldKey=> {
let newKey = newKeyMappings[oldKey];
let result ={};
result[newKey]=tab[oldKey];
return result;
});
因为mapped包含映射对象的数组apply reduce operator
let result = mapped.reduce((result, item)=> {
let key = Object.keys(item)[0];
result[key] = item[key];
return result;
}, {});