如何根据项目是否是对象的键从另一个列表创建项目列表? (首选 Lodash)
How to create a list of items from another list based on if the items are the key of an object? (Lodash preferred)
如何用更 eloquent 的方式表达,最好使用 Lodash:
anObject = {
'a': 'apple',
'b': 'banana'
};
largeArray = ['a', 'c', 'd'];
emptyArray = [];
for (var s = 0; s < largeArray.length; s++) {
if (anObject[largeArray[s]]) {
emptyArray.push(anObject[largeArray[s]]);
}
}
console.log(emptyArray)
应该给我:
emptyArray = ['a']
你不需要 lodash。使用内置的 Array.prototype.filter()
方法。这将 return 一个新数组而不修改原始数组。
let obj = {'a': 'apple', 'b': 'banana'};
let arr = ['a', 'c', 'd'];
let result = arr.filter(item => obj.hasOwnProperty(item));
console.log(result); // ['a']
或者,在 ES5 中:
var obj = {'a': 'apple', 'b': 'banana'};
var arr = ['a', 'c', 'd'];
var result = arr.filter(function(item) {
return obj.hasOwnProperty(item);
});
console.log(result); // ['a']
使用来自 lodash 的 filter(), has(), and partial():
_.filter(largeArray, _.partial(_.has, anObject));
您可以从 anObject
变量中获取 intersection() from the largeArray
and the keys() 来完成此操作。
_.intersection(largeArray, _.keys(anObject));
var anObject = {'a': 'apple', 'b': 'banana'};
var largeArray = ['a','c','d'];
var emptyArray = _.intersection(largeArray, _.keys(anObject));
console.log(emptyArray);
<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>
如何用更 eloquent 的方式表达,最好使用 Lodash:
anObject = {
'a': 'apple',
'b': 'banana'
};
largeArray = ['a', 'c', 'd'];
emptyArray = [];
for (var s = 0; s < largeArray.length; s++) {
if (anObject[largeArray[s]]) {
emptyArray.push(anObject[largeArray[s]]);
}
}
console.log(emptyArray)
应该给我:
emptyArray = ['a']
你不需要 lodash。使用内置的 Array.prototype.filter()
方法。这将 return 一个新数组而不修改原始数组。
let obj = {'a': 'apple', 'b': 'banana'};
let arr = ['a', 'c', 'd'];
let result = arr.filter(item => obj.hasOwnProperty(item));
console.log(result); // ['a']
或者,在 ES5 中:
var obj = {'a': 'apple', 'b': 'banana'};
var arr = ['a', 'c', 'd'];
var result = arr.filter(function(item) {
return obj.hasOwnProperty(item);
});
console.log(result); // ['a']
使用来自 lodash 的 filter(), has(), and partial():
_.filter(largeArray, _.partial(_.has, anObject));
您可以从 anObject
变量中获取 intersection() from the largeArray
and the keys() 来完成此操作。
_.intersection(largeArray, _.keys(anObject));
var anObject = {'a': 'apple', 'b': 'banana'};
var largeArray = ['a','c','d'];
var emptyArray = _.intersection(largeArray, _.keys(anObject));
console.log(emptyArray);
<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>