如何使用lodash通过多个字段对对象数组进行排序.所以对于这样的数组:
[
{a: 'a', b: 2},
{a: 'a', b: 1},
{a: 'b', b: 5},
{a: 'a', b: 3},
]
Run Code Online (Sandbox Code Playgroud)
我期待这个结果
[
{a: 'a', b: 1},
{a: 'a', b: 2},
{a: 'a', b: 3},
{a: 'b', b: 5},
]
Run Code Online (Sandbox Code Playgroud) 我将使用forOwn迭代对象的属性并手动创建一个数组,并且无法帮助认为已经有一个oneliner已经可用.
{
prop1 : "value",
prop2: { sub:1}
}
Run Code Online (Sandbox Code Playgroud)
至:
[
{key: "prop1", value: "value"},
{key: "prop2", value: {sub:1}}
]
Run Code Online (Sandbox Code Playgroud)
谢谢
我有这个数组:
var fruits = ['Apple', 'Banana', 'Orange', 'Celery'];
Run Code Online (Sandbox Code Playgroud)
我使用Lodash是remove这样的:
_.remove(fruits, function (fruit) {
return fruit === 'Apple' || 'Banana' || 'Orange';
})
Run Code Online (Sandbox Code Playgroud)
结果是['Apple', 'Banana', 'Orange', 'Celery'],虽然我期待它['Apple', 'Banana', 'Orange'].为什么会这样?
find当我的条件涉及嵌套数组时,我没有看到对象的方法.
var modules = [{
name: 'Module1',
submodules: [{
name: 'Submodule1',
id: 1
}, {
name: 'Submodule2',
id: 2
}
]
}, {
name: 'Module2',
submodules: [{
name: 'Submodule1',
id: 3
}, {
name: 'Submodule2',
id: 4
}
]
}
];
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为它submodules是一个数组,而不是一个对象.是否有任何速记可以使这项工作?我试图避免手动迭代数组.
_.where(modules, {submodules:{id:3}});
Run Code Online (Sandbox Code Playgroud) 我有两个集合,对象有一个公共密钥"userId".如下:
var _= require('lodash');
var a = [
{ userId:"p1", item:1},
{ userId:"p2", item:2},
{ userId:"p3", item:4}
];
var b = [
{ userId:"p1", profile:1},
{ userId:"p2", profile:2}
];
Run Code Online (Sandbox Code Playgroud)
我想基于"userId"合并它们以产生:
[ { userId: 'p1', item: 1, profile: 1 },
{ userId: 'p2', item: 2, profile:2 },
{ userId: 'p3', item: 4 } ]
Run Code Online (Sandbox Code Playgroud)
到目前为止我有这些:
var u = _.uniq(_.union(a, b), false, _.property('userId'));
Run Code Online (Sandbox Code Playgroud)
结果如下:
[ { userId: 'p1', item: 1 },
{ userId: 'p2', item: 2 },
{ userId: 'p3', item: 4 …Run Code Online (Sandbox Code Playgroud) 我正在使用v4.11.0.我想根据milliseconds属性对对象进行排序.这是阵列:
[
{
"name": "bug12755.xml",
"list": "bugs42",
"start-date": "2015-09-14",
"age": {
"text": "7 months",
"milliseconds": 18381227304
}
},
{
"name": "bug12922.xml",
"list": "bugs42",
"start-date": "2015-08-27",
"age": {
"text": "8 months",
"milliseconds": 19936427304
}
},
{
"name": "bug13183.xml",
"list": "bugs50",
"start-date": "2015-08-27",
"age": {
"text": "8 months",
"milliseconds": 19936427305
}
}
]
Run Code Online (Sandbox Code Playgroud)
我遗漏了一些关于这个iteratee功能的基本知识.我有这个,但似乎没有排序数组.提前致谢!
_.orderBy(list, function(item) {
return item.age.value;
}, ['desc']);
Run Code Online (Sandbox Code Playgroud) 我在文档中看不到它 - http://lodash.com/docs-请帮助我:
有什么相反的_.pairs()?必须有一个 - 我只是不能'看到哪里!
目标是从表单数组中生成键/值对 [['key1':'value1'], ['key2':'value2'], ...]
并不是说我真的需要一个lib:我只想重新使用它们..
我有一个对象数组,对象的数量是可变的 -
var people = [{
name: john,
job: manager,
salary: 2000
},
{
name: sam,
job: manager,
salary: 6000
},
{
name: frodo,
job: janitor
}];
Run Code Online (Sandbox Code Playgroud)
什么是最优雅的方式来找到使用lodash的所有经理的平均薪水?(我假设我们必须检查对象是否是管理器,以及对象是否具有工资属性)
我正在考虑以下几行 -
_(people).filter(function(name) {
return name.occupation === "manager" && _(name).has("salary");}).pluck("salary").reduce(function(sum,num) { return sum+num });
Run Code Online (Sandbox Code Playgroud)
但我不确定这是否是正确的方法.
假设我有一个对象:
{Derp: 17, Herp: 2, Asd: 5, Foo: 8, Qwe: 12}
Run Code Online (Sandbox Code Playgroud)
我需要按价值对其进行排序.我想要得到的是:
{Derp: 17, Qwe: 12, Foo: 8, Asd: 5, Herp: 2}
Run Code Online (Sandbox Code Playgroud)
我想用它来做lodash.当我使用_.sortBy它时,不会保留密钥:
_.sortBy({Derp: 17, Herp: 2, Asd: 5, Foo: 8, Qwe: 12}).reverse();
// [17, 12, 8, 5, 2]
Run Code Online (Sandbox Code Playgroud)
地狱,我甚至只满足于键数组,但仍然按输入中的值排序:
['Derp', 'Herp', 'Foo', 'Asd', 'Qwe']
Run Code Online (Sandbox Code Playgroud) 我有这个对象:
{"": undefined}
当我以这种方式检查此对象为空时:
_.isEmpty({"": undefined})
我得到false结果,也许在lodash我们有另一种方法?