我试图获取以imageIds开头的对象的所有键和值.
我的对象显示如下:
{ title: 'fsdfsd',titleZh: 'fsdfsd',body: 'fsdf',bodyZh: 'sdfsdf',imageIds: '/uploads/tmp/image-3.png',imageIdsZh: '' }
但我只需要属性imageIds和imageIdsZh.然而明天,一个对象可能包含imageIdsBlah,我也需要拿起它.我可以从对象中删除前几个属性,但是下一个对象可能包含其他属性,如foo:’bar’
解决方法
一些功能性的风格awesomeness:
var data = { title: 'fsdfsd',imageIdsZh: '' }; var z = Object.keys(data).filter(function(k) { return k.indexOf('imageIds') == 0; }).reduce(function(newData,k) { newData[k] = data[k]; return newData; },{}); console.log(z);
一些小的解释:
>我们使用Array.prototype.filter()函数过滤出以`imageIds2开头的键
>我们使用Array.prototype.reduce()将过滤的键数组转换为键值对的对象.为此,我们使用{}(一个空对象)的初始值,填充它并从每个执行步骤返回.
UPD:
从@GitaarLAB公平更新:
Object.keys
is ES5,but returns an objects own properties (so no need forobj.hasOwnProperty(key)
)
原文地址:https://www.jb51.cc/js/149880.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。