2014-01-24 2 views
0

У меня есть следующий массив:Удаление разделов из массива

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

здесь смотрите: HTTP: //stackoverflow.com/questions/7015512/removing-an-element-from-an-array-specifying-a-value-in-javascript?rq = 1 – Swires

ответ

3

Элементы массива - это объекты, а не массивы, и для среза объектов нет встроенной функции. Легко написать хотя:

function removeKeys(obj, keys) { 
    keys.forEach(function(key) { delete obj[key] }); 
    return obj 
} 

, а затем

KHWArray = KHWArray.map(function(elem) { 
    return removeKeys(elem, ['hours', 'mins'])  
}) 

http://jsfiddle.net/HZDaX/

+0

Примечание. Метод 'map' не существует в старых браузерах, например IE8. – Guffa

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 5th edition. Убедитесь, что ваши целевые браузеры поддерживают его (или предоставляют прокладку ).

2

Используйте delete operator удалить свойства из объекта:

for (var i = 0; i < KHWArray.length; i++) { 
    delete KHWArray[i].hours; 
    delete KHWArray[i].mins; 
} 
Смежные вопросы