Ответ 1
n
- ваш элемент списка, поэтому что-то вроде этого должно выполнить задание:
$.grep(issuesArray, function(n) { return n.ID != "2"; })
Я работаю с массивом объектов JavaScript как таковых:
var IssuesArray = [{"ID" : "1", "Name" : "Issue1"},
{"ID" : "2", "Name" : "Issue2"},
{"ID" : "3", "Name" : "Issue3"}];
Мое конечное усилие пытается удалить объект из массива, когда я знаю идентификатор объекта. Я пытаюсь использовать код, который выглядит примерно так:
$.grep(IssuesArray, function(n, i) {
return i != $.inArray("2", IssuesArray);
});
Итак, это показывает, что я пытаюсь использовать jQuery grep для удаления элемента по индексу (i), который я пытаюсь получить с помощью jQuery inArray. Конечно, код выше не будет работать, потому что "2" должен соответствовать элементу в массиве, который является всеми объектами JavaScript (объект никогда не будет равен "2" ). Мне нужно что-то вроде:
$.inArray(javascriptObject.Name=="2", IssuesArray);
Кто-нибудь когда-либо имел успех с использованием inArray для получения индексов объектов JavaScript, используя значение поля внутри этого объекта? Любая помощь будет оценена по достоинству. Спасибо.
ОБНОВЛЕНИЕ/ПОДТВЕРЖДЕНИЕ: Несколько человек были смущены моим вопросом, но я получил ответ, который работает, тем не менее. Я использую:
IssuesArray = $.grep(IssuesArray, function(n) {
return n.ID != "2";
});
Думаю, я думал об этом слишком глубоко, когда решение было очень легко. Я просто хотел удалить объект JavaScript из массива, пока я знал определенное значение свойства в этом объекте. В приведенном выше решении используется jQuery grep для возврата всего из массива, за исключением любого объекта, чей идентификатор == "2" . Как обычно, спасибо за быстрые ответы. Ответы пары были хорошими решениями и работали бы с использованием (например, "сплайсинга" ), но это решение кажется самым коротким самым простым. Еще раз спасибо.
n
- ваш элемент списка, поэтому что-то вроде этого должно выполнить задание:
$.grep(issuesArray, function(n) { return n.ID != "2"; })
Не уверен, правильно ли я понял ваш вопрос, но я бы сделал:
$.each(IssuesArray, function(i, item){
if (item.ID == IDToBeRemoved) IssuesArray.splice(i, 1);
});
var spliceID = function(id, arr) {
$(arr).each(function(i, el) {
if (el.ID == id) {
arr.splice(i,1);
return false;
}
});
return arr;
}
console.log(spliceID('2', IssuesArray));
Без использования jQuery или других фреймворков:
var newArray = [];
var i=0, len=IssuesArray.length;
var bad_id = "2"; // or whatever
while(i<len) {
if(IssuesArray[i].ID !== bad_id) {
newArray.push(IssuesArray[i++]);
}
}
Simplify??
var IssuesArray = {
1: "Issue1",
2: "Issue2",
3: "Issue3"
};
var issue2 = IssuesArray[2];
Почему список хэшей, когда будет выполняться один хэш?