我有一小段代码。此代码将获取具有键值对的对象。我有另一个对象,它是一个空数组。我想遍历对象,并从集合中创建每个值对的数组,然后将每个数组推入空数组对象。
我当前正在做的是传递一个集合(空数组)和一个函数。我想创建另一个函数,将该函数应用于对象中的每个项目。我能够获取每个对象的值并清空集合。我需要抓住每个值键并为其创建一个数组。
var letters = {d: 'dog', e: 'elephant', f: 'flotsam'};
var iterations = [];
_.each(letters, function(value, property) {
iterations.push([value, property]);
});
expect(iterations).to.eql([
['dog', 'd'],
['elephant', 'e'],
['flotsam', 'f']
]);
// this is the function that accepts a empty collection and callback
_.each = function(collection, iterator) {
console.log(Object.keys(collection))
for (var i = 0; i < collection.length; i++){
// I want to insert the key where the (i) is located below
iterator(collection[i],i , collection);
};
};
我想在循环通过传递的集合时抓住每个键,并将该键插入(i)是下面代码段底部的两行的位置。我尝试了几种不同的方法,但是它们不起作用。
答案 0 :(得分:0)
使用本地forEach
:
_.each = function(collection, iterator) {
Object.keys(collection).forEach(x => iterator(collection[x], x, collection));
};
答案 1 :(得分:0)
如果要获取键值对,则可以在对象的键上使用map method,例如:
const myArray = Object.keys(letters).map((key)=>[letters[key], key])
如果这不是您想要的,您可以告诉我:
答案 2 :(得分:0)
不仅够了
_.map(letters, (v,k)=>[v,k])
请记住,您可以直接使用underscore/lodash
对来对对象使用所有value/key
集合函数。
var letters = {d: 'dog', e: 'elephant', f: 'flotsam'},
iterations = _.map(letters, (v,k)=>[v,k]);
console.log('Iterations: ', iterations);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>