使用如下对象:
var object = {
a: 2,
b: 6
};
var array _.keys(object).unshift('type');
var array1 _.keysIn(object).unshift('type');
console.log(array) // ['a', 'b'] and not ['type', 'a', 'b']
console.log(array1) // ['a', 'b'] and not ['type', 'a', 'b']
有什么特别的原因或者我错过了什么?
答案 0 :(得分:1)
Array#unshift改变数组,并返回新的长度。创建一个键数组,并在另一个表达式中取消type
。
var object = {
a: 2,
b: 6
};
var array = _.keys(object); // or Object.keys()
array.unshift('type');
console.log(array);

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
&#13;
另一种选择是使用Array#concat:
var object = {
a: 2,
b: 6
};
var array = [].concat('type', Object.keys(object));
console.log(array);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
&#13;
答案 1 :(得分:0)
Lodash启用方法链序列,implicitly或explicitly。
一旦开始链接,you can use both Lodash and native Array methods,就像这样:
var object = {
a: 2,
b: 6
};
var array = _
.chain(object)
.keys()
.unshift('type')
.value();
console.log(array);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.core.min.js"></script>
由于这样的链序列的结果不是单个值或原始值(它是一个数组),因此必须使用value()
来解包它。