标签: lodash

使用Lodash按属性合并对象数组

我有两个对象数组,表示具有标签和值的电子邮件地址:

var original = [
  {
    label: 'private',
    value: 'private@johndoe.com'
  },
  {
    label: 'work',
    value: 'work@johndoe.com'
  }
];

var update = [
  {
    label: 'private',
    value: 'me@johndoe.com'
  },
  {
    label: 'school',
    value: 'schhol@johndoe.com'
  }
];
Run Code Online (Sandbox Code Playgroud)

现在我想按label字段比较和合并两个数组,以便结果如下所示:

var result = [
  {
    label: 'private',
    value: 'me@johndoe.com'
  },
  {
    label: 'work',
    value: 'work@johndoe.com'
  },
  {
    label: 'school',
    value: 'schol@johndoe.com'
  }
]
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做,例如使用lodash

javascript arrays merge lodash

38
推荐指数
1
解决办法
5万
查看次数

Lodash .clone和.cloneDeep行为

我尝试使用嵌套对象克隆一个对象数组.

就像是:

var data = [
    { id: 1, values: { a: 'a', b: 'b' } },
    { id: 2, values: { c: 'c', d: 'd' } }
];
Run Code Online (Sandbox Code Playgroud)

_.克隆

使用_.clone方法和isDeep参数true:

var clone = _.clone(data, true);

data[1].values.d = 'x';

console.log( _.isEqual(data, clone) ); // true, clone[1].values.d == 'x'
Run Code Online (Sandbox Code Playgroud)

我期望clone[1].values.d == 'd':

如果isDeep为true,则也将克隆嵌套对象,否则将通过引用分配它们.

怎么了?

_.CloneDeep

另外,当我尝试使用该_.cloneDeep方法时,我收到一个错误:

var clone = _.cloneDeep(data);

// Uncaught TypeError: Object function u(n){return n instanceof u?n:new o(n)}
// …
Run Code Online (Sandbox Code Playgroud)

javascript jquery backbone.js underscore.js lodash

37
推荐指数
1
解决办法
13万
查看次数

lodash版本4中的_.pluck()在哪里?

pluck()在lodash版本4中发生了什么?什么是合适的替代品?

这种语法_.pluck(users, 'firstName');对我来说很简单.似乎_.map(users, function(user) { return user.firstName; }可以做到这一点,但它不是那么整洁.

javascript lodash

37
推荐指数
1
解决办法
1万
查看次数

如何将包含对象的对象转换为对象数组

这是我的对象

var data = {
    a:{"0": "1"},
    b:{"1": "2"},
    c:{"2": "3"},
    d:{"3": "4"}
};
Run Code Online (Sandbox Code Playgroud)

这是我期望的输出

data = [ 
    {"0": "1"},
    {"1": "2"},
    {"2": "3"},
    {"3": "4"}
]
Run Code Online (Sandbox Code Playgroud)

javascript lodash

35
推荐指数
5
解决办法
3万
查看次数

如何使用Underscore.js对数组数组执行联合或交集

我有一个数组数组:

var selected = [[1, 4, 5, 6], [1, 2, 3, 5, 7], [1, 4, 5, 6], [1, 7]];
Run Code Online (Sandbox Code Playgroud)

Underscore.js具有方便的并集和交集方法,但它们可以将每个数组作为参数单独传递.

如果要执行设置操作的数组的数量是任意的,我该如何处理呢?

这个问题解决了类似的问题,但它适用于包含对象的数组.

javascript underscore.js lodash

34
推荐指数
2
解决办法
1万
查看次数

Lodash:如何向集合中的所有值添加新字段

例:

var arr = [{name: 'a', age: 23}, {name: 'b', age: 24}]  
var newArr = _.enhance(arr, { married : false });

console.log(newArr); // [{name: 'a', age: 23, married : false}, {name: 'b', age: 24, married : false}]
Run Code Online (Sandbox Code Playgroud)

我正在寻找能做到这一点的事情.注意,lodash中不存在增强功能.用lodash可以做到这一点吗?
如果不是 - 可能添加?

谢谢,

javascript underscore.js lodash

34
推荐指数
4
解决办法
4万
查看次数

如何在lodash中打破_.forEach?

我无法打破_.forEach循环,帮助我做到这一点.

_.forEach(oIncludedFileMap, function (aIncludedFiles, sKey) {
  if(aIncludedFiles == null){
     break;
  }
});
Run Code Online (Sandbox Code Playgroud)

javascript node.js lodash

33
推荐指数
1
解决办法
2万
查看次数

Lo-Dash,数组和集合之间的区别

浏览一下Lo-Dash文档,可以看出API属于以下类别:

  1. 阵列,
  2. 链接,
  3. 集合,
  4. 功能,
  5. 对象,
  6. 公用事业,
  7. 方法,
  8. 和属性

更详细地了解Arrays API,可以看到大约30种适用于数组的不同方法.

Collections API有比Arrays API更多的方法,它们不共享相同的方法.

在Collections API中,集合被描述为迭代的对象,可以是一个数组:

collection(Array | Object | string):要迭代的集合.

另外,有趣的是,有一个Collections API方法_.toArray从集合中返回一个数组:

参数

collection(Array | Object | string):要转换的集合.返回

(Array):返回新转换的数组.

有人会碰巧知道Lo-Dash API中数组和集合之间的形式差异吗?由于Backbone.js的原因,我认为这是一个区别,但是,现在我正在质疑我的推理,因为这些方法可能在其他地方可用.提前致谢.

javascript backbone.js lodash

32
推荐指数
2
解决办法
1万
查看次数

相当于_.pick()但对于Lo-dash中的数组

我有以下集合:

var columns = [
    { key:'url', width:20, type:'text' },
    { key:'title', width:21, type:'text' },
    { key:'desc', width:22, type:'text' },
    { key:'domain', width:23, type:'text' },
    { key:'user', width:24, type:'text' }
];
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来映射一个带有拾取键的对象数组,类似于:

_.mapPick(columns, [width]) 
// [{width:20},{width:21},{width:22},{width:23},{width:24}]
Run Code Online (Sandbox Code Playgroud)

我知道我可以像这样扩展lo-dash:

_.mixin({
    mapPick:  mapPick:function (objs,keys){
        return _.map(objs, function (obj) {
            return _.pick(obj,keys)
        })
    }

});
Run Code Online (Sandbox Code Playgroud)

我不确定是否有一些我缺少的本机功能.

我在这里发现了一个类似的问题,但我正在寻找一种更为低调的本土方式.

javascript arrays lodash

32
推荐指数
6
解决办法
2万
查看次数

替换数组中的对象

我有这个javascript对象:

var arr1 = [{id:'124',name:'qqq'}, 
           {id:'589',name:'www'}, 
           {id:'45',name:'eee'},
           {id:'567',name:'rrr'}]

var arr2 = [{id:'124',name:'ttt'}, 
           {id:'45',name:'yyy'}]
Run Code Online (Sandbox Code Playgroud)

我需要用arr2中具有相同id的项替换arr1中的对象.

所以这是我想得到的结果:

var arr1 = [{id:'124',name:'ttt'}, 
           {id:'589',name:'www'}, 
           {id:'45',name:'yyy'},
           {id:'567',name:'rrr'}]
Run Code Online (Sandbox Code Playgroud)

如何使用javascript实现它?

javascript lodash

31
推荐指数
6
解决办法
4万
查看次数

标签 统计

javascript ×10

lodash ×10

underscore.js ×3

arrays ×2

backbone.js ×2

jquery ×1

merge ×1

node.js ×1