为什么有人更喜欢lodash.js或underscore.js实用程序库而不是另一个?
Lodash似乎是下划线的替代品,后者已经存在了更长时间.
我认为两者都很精彩,但我对他们如何努力进行有根据的比较并不了解,我想更多地了解这些差异.
我有2个不同的嵌套对象,我需要知道它们的嵌套属性是否有差异.
var a = {};
var b = {};
a.prop1 = 2;
a.prop2 = { prop3: 2 };
b.prop1 = 2;
b.prop2 = { prop3: 3 };
Run Code Online (Sandbox Code Playgroud)
使用更多嵌套属性,对象可能会复杂得多.但这个是一个很好的例子.我可以选择使用递归函数或者使用lodash ...
我曾经用过Lodash _.pluck......我喜欢采摘...
实现Lodash不再支持pluck(从Lodash 4.x开始),我很难记住要使用的内容......
我去了文档,打了cmd-f,输入'pluck',但是我可怜的被遗弃的朋友甚至没有给出适当的提及......甚至没有'被'取代'......
有人可以提醒我,我应该使用什么?
我很难尝试导入lodash模块.我使用npm + gulp设置我的项目,并继续击中同一面墙.我尝试过常规的lodash,还有lodash-es.
lodash npm包:(包根文件夹中有一个index.js文件)
import * as _ from 'lodash';
Run Code Online (Sandbox Code Playgroud)
结果是:
error TS2307: Cannot find module 'lodash'.
Run Code Online (Sandbox Code Playgroud)
lodash-es npm包:(在lodash.js中有一个defaut导出我的包根文件夹)
import * as _ from 'lodash-es/lodash';
Run Code Online (Sandbox Code Playgroud)
结果是:
error TS2307: Cannot find module 'lodash-es'.
Run Code Online (Sandbox Code Playgroud)
gulp任务和webstorm都报告了同样的问题.
有趣的是,这不会返回错误:
import 'lodash-es/lodash';
Run Code Online (Sandbox Code Playgroud)
......但当然没有"_"......
我的tsconfig.json文件:
{
"compilerOptions": {
"target": "es5",
"module": "system",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false
},
"exclude": [
"node_modules"
]
}
Run Code Online (Sandbox Code Playgroud)
我的gulpfile.js:
var gulp = require('gulp'),
ts = require('gulp-typescript'),
uglify = require('gulp-uglify'),
sourcemaps = require('gulp-sourcemaps'),
tsPath = …Run Code Online (Sandbox Code Playgroud) 这是我的数据:
[
{
url: 'www.example.com/hello',
id: "22"
},
{
url: 'www.example.com/hello',
id: "22"
},
{
url: 'www.example.com/hello-how-are-you',
id: "23"
},
{
url: 'www.example.com/i-like-cats',
id: "24"
},
{
url: 'www.example.com/i-like-pie',
id: "25"
}
]
Run Code Online (Sandbox Code Playgroud)
使用Lodash,我怎么能删除具有重复id键的对象?有过滤器,地图和独特的东西,但不太确定.
我的真实数据集要大得多,并且有更多的密钥,但概念应该是相同的.
我有一个带有一些键的对象,我想只保留一些键值?
我尝试过filter:
const data = {
aaa: 111,
abb: 222,
bbb: 333
};
const result = _.filter(data, (value, key) => key.startsWith("a"));
console.log(result);Run Code Online (Sandbox Code Playgroud)
但它打印一个数组:
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>Run Code Online (Sandbox Code Playgroud)
这不是我想要的.
如何用lodash做到这一点?或者其他什么,如果lodash不工作?
我在下面有一个拉取请求反馈,只是想知道哪种方式是导入lodash的正确方法?
你最好从'lodash/has'进行导入..对于早期版本的lodash(v3),它本身非常重,我们应该只导入一个specidic模块/函数而不是导入整个lodash库.不确定较新的版本(v4).
import has from 'lodash/has';
Run Code Online (Sandbox Code Playgroud)
VS
import { has } from 'lodash';
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一个看起来像这样的对象:
var obj = {
"objectiveDetailId": 285,
"objectiveId": 29,
"number": 1,
"text": "x",
"subTopics": [{
"subTopicId": 1,
"number": 1
}, {
"subTopicId": 2,
"number": 32
}, {
"subTopicId": 3,
"number": 22
}]
}
var stToDelete = 2;
Run Code Online (Sandbox Code Playgroud)
我lodash在我的应用程序中安装了其他东西.是否有一种有效的方法来lodash删除条目:{"subTopicId":2, "number":32}从obj对象?
或者有一种javascript方式来做到这一点?
我有一个Javascript对象,如:
var my_object = { a:undefined, b:2, c:4, d:undefined };
Run Code Online (Sandbox Code Playgroud)
如何删除所有未定义的属性?