2016-01-22 1 views
0

Я пытаюсь вывести .match() результат в массив, но мне не нужен массив в массиве.Попытка нажать .match результат в массиве

So Возможно ли получить только значение, находящееся внутри массива результатов?

$scope.iframes.duration.push($scope.iframes.src[i].match(/data-duration="[^]*?"/g)); 

Вот как я это делаю сейчас; однако, я не хочу новый массив в исходном, я просто хочу значение результата.

ответ

1

Вы можете использовать Array#concat, чтобы добавить в массив duration элементы массива результатов.

$scope.iframes.duration = $scope.iframes.duration.concat($scope.iframes.src[i].match(/data-duration="[^]*?"/g)); 

concat() не обновляет фактический массив, она возвращает обновленный массив. Чтобы обновить массив, вы можете назначить результат concat массиву.

Кроме того, RegEx должен быть /data-duration="[^"]*?"/g, чтобы соответствовать значению атрибута data-duration, который заключен в кавычки.

Поскольку существует только один действительный атрибут с таким же именем, вы можете смело удалить флаг g из RegEx.

+0

Все это выглядело очень хорошо и звучало так, как будто оно должно работать, но этот '$ scope.iframes.duration.concat ($ scope.iframes.src [i] .match (/ data-duration = "[^] *?"/g)); 'просто не работает? – SjaakvBrabant

+1

@Goldenowner Чтобы обновить массив, вам нужно назначить результат. Ex. '$ scope.iframes.duration = $ scope.duration.concat (...' – Tushar

+0

Вы правы, спасибо большое! – SjaakvBrabant

2

Вы можете использовать concat вместо push для конкатенации массива с исходным.

+0

Спасибо! Я никогда не слышал об этой функции, но ее работы отлично :) – SjaakvBrabant

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