我试图获取以对象开头的所有键和值imageIds.
我的对象如下所示:
{
title: 'fsdfsd',
titleZh: 'fsdfsd',
body: 'fsdf',
bodyZh: 'sdfsdf',
imageIds: '/uploads/tmp/image-3.png',
imageIdsZh: ''
}
Run Code Online (Sandbox Code Playgroud)
但我只需要属性imageIds,和imageIdsZh.但是明天,一个对象可能包含imageIdsBlah,我也需要把它拿起来.我可以从对象中删除前几个属性,但是下一个对象可能包含其他属性,例如foo: 'bar'
zer*_*kms 25
一些功能风格很棒:
var data = {
title: 'fsdfsd',
titleZh: 'fsdfsd',
body: 'fsdf',
bodyZh: 'sdfsdf',
imageIds: '/uploads/tmp/image-3.png',
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);
Run Code Online (Sandbox Code Playgroud)
一些小的解释:
Array.prototype.filter()函数来过滤掉以`imageIds2开头的键Array.prototype.reduce()将过滤键的数组转换为key-value对的对象.为此,我们使用{}(空对象)的初始值,填充它并从每个执行步骤返回.UPD:
来自@GitaarLAB的公平更新:
Object.keys是ES5,但返回一个对象自己的属性(所以不需要obj.hasOwnProperty(key))
| 归档时间: |
|
| 查看次数: |
6646 次 |
| 最近记录: |