我有以下数组:
KHWArray = [{"date":"23 Jan 14","hours":12,"mins":"31","score":22},
{"date":"23 Jan 14","hours":12,"mins":"36","score":22},
{"date":"23 Jan 14","hours":12,"mins":"44","score":22}
]
如何从所有阵列中删除小时和分钟部分,以便留下日期和分数。
我已经研究过拼接和删除但似乎无法使这项工作
答案 0 :(得分:3)
您的数组元素是对象,而不是数组,并且没有用于切片对象的内置函数。写起来很容易:
function removeKeys(obj, keys) {
keys.forEach(function(key) { delete obj[key] });
return obj
}
然后
KHWArray = KHWArray.map(function(elem) {
return removeKeys(elem, ['hours', 'mins'])
})
答案 1 :(得分:2)
map
似乎是您最好的选择:
var result = KHWArray.map(function(elt) {
return {date: elt.date, score: elt.score};
});
作为替代方案,使用多才多艺的reduce
:
var result = KHWArray.reduce(function(target, elt) {
target.push({date: elt.date, score: elt.score});
return target;
}, []);
基本上将空数组作为第二个参数传递;它将在处理程序中作为 target 引用。推送符合您需求的对象并返回目标。
警告:map
和reduce
都是 ECMAScript第5版的一部分。确保您的目标浏览器支持它(或提供 shim )。
答案 2 :(得分:2)
使用delete
operator删除对象的属性:
for (var i = 0; i < KHWArray.length; i++) {
delete KHWArray[i].hours;
delete KHWArray[i].mins;
}