2015-08-26 2 views
0

У меня есть объект, который яваскрипта выглядит примерно так:Удаление Javascript свойства объекта не соответствуют строки

object { 
    attribute[1424]1405: 149, 
    attribute[1425]1406: 149, 
    attribute[1426]1407: 149, 
    attribute[1426]1408: 149, 
    attribute[1649]2116: 149, 
    attribute[1649]2117: 179, 
    attribute[1649]2408: 119 
} 

Я пытаюсь удалить все свойства, которые не начинаются с attribute[1649] (хранится в переменной с именем conditionID). Есть ли какой-то фильтр, похожий на !:contains(), который я могу запустить против объекта командой delete?

ответ

0

Нет, нет. Просто используйте обычный for in цикл:

for (var p in obj) 
    if (!/^attribute\[1649\]/.test(p)) 
     delete obj[p]; 

(см How to check if a string "StartsWith" another string? альтернативы регулярное выражение)

+0

Спасибо @Bergi, который работает очень хорошо, когда я явно указать строку для проверки на. Строка, которую я пытаюсь проверить (атрибут [1649] в этом примере), однако, хранится в переменной, которая, как мне кажется, привела меня к пути использования 'delete'. Я пытаюсь сделать код таким образом, но у меня нет никакого результата: 'r ="!/"+ ConditionID +" /.test(p) ";' 'reg = new RegExp (r," g "); ' ' delete amount [reg]; ' –

+0

Оператор'! 'Не является частью регулярного выражения, ни' '' '' literal delimiters. В любом случае вам не следует использовать регулярное выражение здесь (для этого требуется экранирование и т. Д.), Просто используйте одно из решений в связанной статье для динамических шаблонов. – Bergi

Смежные вопросы