- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
与剩余参数一起使用时,解构功能的一个很好的用例是您可以获得 trim 过的克隆。
var source = { w1: 'val1', w2: 'val2', unwanted1: 'val3', unwanted2: 'val4'};
var {unwanted1, unwanted2, ...target} = source;
console.log(target); // `{ w1: 'val1', w2: 'val2' }` Exactly what you want
但是,副作用是您的作用域现在被两个您从不关心使用的变量污染:unwanted1
和 unwanted2
。
如果_
表示不在乎,你可以这样做
var {
unwanted1:_, // throw away
unwanted2:_, // throw away
target
} = source;
但是,在 Javascript 中 _
是一个正确的标识符。如果以这种方式使用一次(不需要的:_
),您最终会得到一个名为 _
的不需要的变量,这违背了目标。如果像上面一样使用多次,则会发出错误:
语法错误:标识符“_”已声明
。
有什么方法可以丢弃不需要的解构工件/变量吗?
当然,以下解决方案始终可用。
var target = {
w1: source.w1,
w2: source.w2,
}
和
var target = {...source};
delete target.unwanted1;
delete target.unwanted2;
但是,如果您要克隆具有许多参数的对象并且只需要排除几个参数,那么通过解构来执行此操作似乎是最干净的方法。
最佳答案
引入 _
、__
、___
等来删除 1、2、3 或更多属性并没有太大区别,因为它仍然会创建变量,这些变量“...您永远不会关心使用”,而且,它可能会给您的代码添加意大利面条的味道。
但是,由于您需要明确指出要删除哪些属性,因此可以考虑其他对象 trim 技术,例如
const obj = {prop1: 1, prop2:2, prop3: 3, prop4: 4, prop5: 5},
keysToDrop = ['prop2', 'prop3', 'prop4'],
trimmedObj = Object.fromEntries(
Object
.entries(obj)
.filter(([key,val]) => !keysToDrop.includes(key)
)
)
console.log(trimmedObj)
.as-console-wrapper{min-height:100%;}
Array.prototype.reduce()
,它甚至可以为您提供某些performance boost ,与解构相比const obj = {prop1: 1, prop2:2, prop3: 3, prop4: 4, prop5: 5},
keysToDrop = ['prop2', 'prop3', 'prop4'],
trimmedObj = Object
.keys(obj)
.reduce((r,key) =>
(!keysToDrop.includes(key) && (r[key] = obj[key]), r),{})
console.log(trimmedObj)
.as-console-wrapper{min-height:100%;}
关于javascript - ES6 处理对象解构剩余的内容(对象 trim ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60916634/
我认为 trim() 不存储 trim 后的值。 我在用户提交他们的字符串之前对结果应用了 trim 并且它起作用了,它通过删除额外的空间来正确显示。但是如果我取回 trim 后的值,它会给我用户输入
我遇到了一些困惑。 我知道 String 对象是不可变的。这意味着如果我从 String 类调用方法,例如 replace(),则 String 的原始内容不会改变。相反,一个新的 String 被返
下面是一个使用 trim 的简单示例。根据问题的标题,它们之间有什么区别吗?正如您在下面看到的,它们具有相同的输出。如果答案是“否”,使用哪个更好? 目前我使用 .trim() 因为这是我第一次看到
我从工作表中的网站复制了一些数据,注意到一些单元格除了预期值外,还包含尾随空格。 由于给我的代码带来麻烦,我想删除这些空格。我发现了一个有这个空间的特定单元格并尝试了: Worksheets(2).R
vba 中的 trim 和 trim$ 有什么区别?今天无意中在vba中使用left和trim函数时,编译器说找不到项目或库 当我用谷歌搜索它时,在一个论坛上我发现用户使用这样的方式 vba.tri
这个问题已经有答案了: Why does Date.parse give incorrect results? (11 个回答) 已关闭 4 年前。 我知道从字符串创建日期通常是一个坏主意,但这仍然引
jQuery trim 和原生 JavaScript trim 之间有什么区别吗? 是否有其他行为、安全、性能? 最佳答案 JavaScript .trim() 是在 ES 5.1 中定义的,不适用于
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
PowerShell 有一个非常好的内置帮助系统,我经常使用它,我可以通过 Get-Help * 查看所有帮助选项。并查询 Cmdlet 或可以使用 Get-Help about_* 查找主题然后说G
查看 jQuery 的源代码: // Use native String.trim function wherever possible trim: trim && !trim.call("\uFEF
如何 trim javascript 日期对象。我有一个日期,格式为(yyyy-d-m)。日期值为 2015-03-03,我想 trim 天数中的前 0,而不是月数。 示例:当我输入:2015-03-
喜欢听听您的意见和理由吗? 我听说深层目录不好,但它与下划线字符相比如何? 最佳答案 使用破折号 - Google 将破折号视为分隔词,但将下划线视为词的一部分。参见 http://www.codin
根据随附的示例工作表,TRIM 似乎无法正常工作,还是我误解了它? 无论哪种方式,目前对我来说非常令人沮丧,因为我有一个电子表格,我必须计算单元格中的单词数,并且由于这个问题,我无法建立一个完全有效/
在这个 jQuery 中,我可以绑定(bind)粘贴事件来验证表单字段,但是我在函数中的方法显然是错误的。我根本没有收到警报。 我只想修剪输入的文本并将其作为表单输入文本字段 #adsense_cli
我有: onclick="document.getElementById('field1').value = Math.round((parseFloat(document.getElementByI
我在页面上有一些小数点后 4 位的价格。有些产品的价格精确到小数点后 4 位,有些则只有 2 位。 目前,我们的网站设置为每种产品显示 4 位小数,我必须使用 JavaScript 来降低那些非 2
我有这棵“树”。 它是一个多维对象。每个“节点”最多有两个属性,分别是 data 和 children。 这是一个例子: {Account: { data: ['stuff'], children:
好吧,伙计们,要么是有一些小问题我没有发现,要么是该 sleep 了。不管是什么,我都非常感谢您的建议。 我正在用 PHP 生成一个 XML 文件。一切都很顺利,直到我输入这一行: $out .= "
我有一个从 AJAX 返回的变量 row['case'] ,它等于“Hello World!”。问题是,当我尝试将其分配给另一个变量时,只有“Hello”被分配,row['case'] =“Hello
我想知道是否可以将整数转换为字符串并在一步内对其进行 trim 。 我有以下对象: 当前表单 { id:1, name:"Abusicus", value:12203, period:"Morning
我是一名优秀的程序员,十分优秀!