微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript:如何获取以特定字符串开头的对象的所有键和值?

我试图获取以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);

演示:http://jsfiddle.net/ngX4m/

一些小的解释:

>我们使用Array.prototype.filter()函数过滤出以`imageIds2开头的键
>我们使用Array.prototype.reduce()将过滤的键数组转换为键值对的对象.为此,我们使用{}(一个空对象)的初始值,填充它并从每个执行步骤返回.

UPD:

@GitaarLAB公平更新:

Object.keys is ES5,but returns an objects own properties (so no need for obj.hasOwnProperty(key))

原文地址:https://www.jb51.cc/js/149880.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐