ced*_*vad 22 javascript object
我有
var obj = {'b': 2, 'c': 3};
Run Code Online (Sandbox Code Playgroud)
我想在该对象的开头(而不是最后)添加一个属性:
var obj = {'a': 1, 'b': 2, 'c': 3};
Run Code Online (Sandbox Code Playgroud)
有干净的方法吗?
Jus*_*tin 40
您也可以在ES6(ES2015 +)中使用Object.assign().
let obj = {'b': 2, 'c': 3};
Object.assign({a: 1}, obj);
// Object {a: 1, b: 2, c: 3}
Run Code Online (Sandbox Code Playgroud)
Que*_*tin 11
JavaScript对象是无序的.没有开始或结束.如果需要订购,请使用数组.
var arr = [
{ key: 'b', value: 2 },
{ key: 'c', value: 3 }
];
Run Code Online (Sandbox Code Playgroud)
然后,您可以添加到它的前面unshift:
arr.unshift({ key: 'a', value: 1 });
Run Code Online (Sandbox Code Playgroud)
dar*_*mis 10
这些天,您可以在ES6(ES2015 +)中使用酷传播算子(...),请尝试以下方法:
const obj = {'b': 2, 'c': 3};
const startAdded = {'a':1 , ...obj};
console.log(startAdded);
const endAdded = {...obj, 'd':4};
console.log(endAdded);Run Code Online (Sandbox Code Playgroud)
可能会在野外帮助某人:)
小智 6
最简单的方法是使用扩展运算符。
let obj = {'b': 2, 'c': 3};
let newObj = {'a': 1, ...obj};
Run Code Online (Sandbox Code Playgroud)
var myObj = _.merge({ col1: 'col 1', col2: 'col 2'}, { col3: 'col 3', col4: 'col 4' });
Run Code Online (Sandbox Code Playgroud)
您的最终对象将如下所示:
{ col1: 'col 1', col2: 'col 2', col3: 'col 3', col4: 'col 4' }
Run Code Online (Sandbox Code Playgroud)
正如其他人所提到的,不能保证对象中键的顺序会保持不变,这取决于您对它的处理方式。但是,如果您将合并作为最后一步执行,则应该没问题。注意,'merge' 函数将产生一个全新的对象,它不会改变你传递给它的任何一个对象。