我现在花了几个小时在Lo-Dash文档站点上,找不到我的问题的解决方案.我不知道它是如何调用的,因此搜索起来有点困难.我基本上想要将数组分组到一个对象中,以便重复的条目是一个字段,而不同的条目是一个数组.
例如,我有这个数组:
var characters = [
{ 'name': 'barney', 'age': 42, 'pet': 'dog' },
{ 'name': 'fred', 'age': 35, 'pet': 'dog' },
{ 'name': 'barney', 'age': 42, 'pet': 'cat' },
{ 'name': 'fred', 'age': 35, 'pet': 'goldfish' }
];
Run Code Online (Sandbox Code Playgroud)
我希望得到这个:
[
{ name: 'barney',
age: 42,
pet: [ 'dog', 'cat' ] },
{ name: 'fred',
age: 35,
pet: [ 'dog', 'goldfish' ] }
]
Run Code Online (Sandbox Code Playgroud)
有没有一个Lo-Dash方法来做这个,还是我必须链接几个?实现这一目标的最佳方法是什么?
有没有人有一个使用Ember-CLI使用LoDash构建的(简单)ember-app项目的工作示例?(例如:我想在我的路由和控制器中使用lodash,_.someLodashFunc).
我没有在网上看到任何关于如何做到这一点的明确,逐步解释的线索/文章.
如果可能的话,使用lodash v3.0.0(我使用的是最新的ember-cli,v0.1.9).
谢谢,拉卡
我发现了如何,你需要生成一个自定义的lodash("lodash modern").使用lodash-cli:https://lodash.com/custom-builds
在命令控制台上输入:lodash modern ...,然后你会得到一个生成的javascript文件:lodash.custom.js
将该文件放在ember-cli项目的"vendor"目录下.
修改Brocfile,添加:
app.import('vendor/lodash.custom.js', {
'lodash': [
'default'
]
});
Run Code Online (Sandbox Code Playgroud)
就是这样......你不必在你的任何js文件中执行"import _ from'loodash'".事实上,不要这样做(你会得到一个错误)._ var很容易获得.
例如,我有一个这样的Route对象:
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
console.log('hohoho: ' + _.chunk(['a', 'b', 'c', 'd'], 2));
return Ember.Object.create({name: 'Raka'});
}
});
Run Code Online (Sandbox Code Playgroud)
我可以看到hohoho:,b,c,当我访问那条路线时,我在javascript控制台中打印出来.
你真的不需要那个lodash-cli.
我试过这种方式(我想更合适):
而已._在路由器/控制器中自动可用.
我对d3做了同样的事情:
名为'd3'的变量可自动使用.
新增相关链接:
为什么lodash在这里返回-1?它显然在那里?
Ignores = ['load', 'test', 'ok'];
alert(_.findIndex(Ignores, 'ok') );
Run Code Online (Sandbox Code Playgroud) 我需要一个函数isSubset,当给定两个对象时,它会比较它的值并判断一个对象是否是另一个对象的子集.
object1 = { pickUpLocation : {city : 'Hyderabad', state: 'Telangana' }};
object2 = { dist : 322, pickUpLocation: {city : 'Hyderabad', state: 'Telangana' }};
Run Code Online (Sandbox Code Playgroud)
isSubset(object1, object2); //should return true
Run Code Online (Sandbox Code Playgroud)
object3 = { pickUpLocation : {city : 'Chennai', state: 'Telangana' }}
object4 = { dist : 322, pickUpLocation: {city : 'Hyderabad', state: 'Telangana' }}
Run Code Online (Sandbox Code Playgroud)
isSubset(object3, object4) //should return false as city's value is different
Run Code Online (Sandbox Code Playgroud) 什么是"权威"方法来检测_变量是否加载了lodash或下划线?
目前,我想出了这个:
/**
* lodash defines a variable PLACEHOLDER = '__lodash_placeholder__'
* so check if that is defined / contains the string "lodash"
*/
if ( typeof( _.PLACEHOLDER ) == 'undefined' || _.PLACEHOLDER.indexOf( 'lodash' ) < 0 ) {
// _ is underscore, do what I need to access lodash
}
Run Code Online (Sandbox Code Playgroud)
重要更新:以上代码不起作用!
是否有一种"权威"方式来检测是否_是lodash或下划线?
注意:
这是一个特定的请求,用于确定是否在_变量中加载了lodash或下划线:
1.无论是否加载下划线,我都无法控制.(lodash 是我的控制范围之内,而且将永远被载入).
2.不能依赖lodash /下划线的加载顺序.
3.加载的下划线版本可能会更改(它是可以更新的CMS框架的一部分).
4. Lodash 4.17.x有300多个功能.我的代码使用了 lodash中的 …
我的代码:
const orig = {" a ":1, " b ":2}
let result = _.mapKeys(_.mapValues(orig, (v) => v + 1), (v, k) => k.trim())
Run Code Online (Sandbox Code Playgroud)
实际和期望的结果= {"a":2,"b":3}
但是有更好的Lodashy方式吗?
以下(简化的)json类型的数据定义了一个联系人:
{
id: number;
name: string;
phone: string;
email: string
}
Run Code Online (Sandbox Code Playgroud)
有以下数据组:
+---+----------+-------------+---------------------------+
|id | name | phone |email |
+---+----------+-------------+---------------------------+
|1 | John | 11111111 |aaaa@test.com |
|2 | Marc | 22222222 |bbbb@test.com |
|3 | Ron | 99999999 |aaaa@test.com |
|4 | Andrew | 55555555 |dddd@test.com |
|5 | Wim | 99999999 |gggg@test.com |
|6 | Marc | 33333333 |cccc@test.com |
|7 | Dan | 44444444 |cccc@test.com |
+---+----------+-------------+---------------------------+
Run Code Online (Sandbox Code Playgroud)
目标是根据以下约束找到使用javascript属于一起的组(可选地在lodash中,但主要思想是使算法清楚):当以下任何条件相同时,联系人属于一个组:name,电话还是邮件.结果显示id被分组为数组中的数组.忽略1组中的联系人.
在上面的示例中,这意味着与ids 1,3,5的联系人属于一起,因为1,3共享相同的电子邮件,3和5共享相同的电子邮件.同样2,6,7:2和6具有相同的名称,6和7具有相同的电子邮件.5没有任何共同之处.因此,预期结果是:
[[1,3,5], [2,6,7]]
背景:一个有效的解决方案是迭代每个项目,如果名称,电子邮件或电话相同,则检查列表的其余部分.如果是这样,将它们分组并将它们从列表中取出(在示例中,我们将1与列表中的所有项目进行比较,只找到3个).问题是还需要再次检查下一个项目到这些组,因为在这种情况下,5尚未被检测为组的一部分.这使算法变得复杂,而我怀疑有一种简单的方法可以在线性时间内解决这个问题.这类问题可能还有一个名字?`
我正在用玩笑编写测试,其中我想监视一些 lodash 函数,我在模块中单独导入这些函数(而不是将整个 lodash 模块导入为_),例如
/** matrix.js **/
import shuffle from 'lodash/shuffle'
import pick from 'lodash/pick'
// ...
/**
* Shuffles the order of the rows in the matrix. If a column/variable name
* is specified, only the rows in this column are shuffled.
*
* @export
* @param {array} matrix The matrix to be shuffled
* @param {array} columns Array containing the variable/column to be shuffled
* @returns {array}
*/
export function shuffleVert (matrix, columns) {
if …Run Code Online (Sandbox Code Playgroud) 我已经看到了 lodash 文档,但我不知道我需要使用什么函数来解决我的问题。我有数组
const arr = [
{name: 'john'},
{name: 'jane'},
{name: 'saske'},
{name: 'jake'},
{name: 'baki'}
]
Run Code Online (Sandbox Code Playgroud)
我想{name: 'ace'}在 saske 之前添加。我知道 javascript 中的 splice,但我想知道这在 lodash 中是否可行。
我正在从 VS IDE 在 Cypress 中运行我的第一个测试,Cypress 一直在工作,直到我遇到下面的错误,而没有更改或更新任何内容。
使用 Node.js 14.16.1 通过 NPM 命令安装的 Cypress (7.0.0) 在执行测试时遇到“找不到模块:错误:无法解析‘cypress/types/lodash”错误消息。
我尝试从项目中删除所有 loadash 文件并执行代码,但错误保持不变。
有人可以告诉我如何诊断或解决这个问题吗?
Error: Webpack Compilation Error
./cypress/integration/myTests/helloWorld.test.js
Module not found: Error: Can't resolve 'cypress/types/lodash' in 'C:\Users\.....\Documents\.....\Tools\Cypress\Software\cypress\integration\myTests'
resolve 'cypress/types/lodash' in 'C:\Users\.....\Documents\.....\Tools\Cypress\Software\cypress\integration\myTests'
Parsed request is a module
using description file: C:\Users\.....\Documents\.....\Tools\Cypress\Software\package.json (relative path: ./cypress/integration/myTests)
Field 'browser' doesn't contain a valid alias configuration
Looked for and couldn't find the file at the following paths:
[C:\Users\.....\Documents\.....\Tools\Cypress\Software\cypress\integration\myTests\node_modules]
[C:\Users\.....\Documents\.....\Tools\Cypress\Software\cypress\integration\node_modules]
[C:\Users\.....\Documents\.....\Tools\Cypress\Software\cypress\node_modules]
[C:\Users\.....\Documents\.....\Tools\Cypress\node_modules]
[C:\Users\.....\Documents\.....\Tools\node_modules]
[C:\Users\.....\Documents\.....\node_modules]
[C:\Users\.....\Documents\node_modules]
[C:\Users\.....\node_modules]
[C:\Users\node_modules]
[C:\node_modules] …Run Code Online (Sandbox Code Playgroud) lodash ×10
javascript ×9
algorithm ×1
arrays ×1
cypress ×1
ember-cli ×1
ember.js ×1
es6-modules ×1
grouping ×1
jestjs ×1
node.js ×1
npm ×1
unit-testing ×1