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))

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...