Можно найти легче циклично выполниться по массиву и создать новый массив из объектов, которые Вы хотите удержаться от массива, чем путем попытки циклично выполнить и соединить, как был предложен, начиная с изменения длины массива, в то время как это циклично выполняется, может представить проблемы.
Вы могли сделать что-то вроде этого:
function removeFalsyElementsFromArray(someArray) {
var newArray = [];
for(var index = 0; index < someArray.length; index++) {
if(someArray[index]) {
newArray.push(someArray[index]);
}
}
return newArray;
}
На самом деле вот более универсальное решение:
function removeElementsFromArray(someArray, filter) {
var newArray = [];
for(var index = 0; index < someArray.length; index++) {
if(filter(someArray[index]) == false) {
newArray.push(someArray[index]);
}
}
return newArray;
}
// then provide one or more filter functions that will
// filter out the elements based on some condition:
function isNullOrUndefined(item) {
return (item == null || typeof(item) == "undefined");
}
// then call the function like this:
var myArray = [1,2,,3,,3,,,,,,4,,4,,5,,6,,,,];
var results = removeElementsFromArray(myArray, isNullOrUndefined);
// results == [1,2,3,3,4,4,5,6]
Вы получаете идею - у Вас могли тогда быть другие типы функций фильтра. Вероятно, больше, чем Вы нужно, но я чувствовал себя щедрым...;)
Использование командной строки для всех сценариев настройки:
cd /usr/bin
rm cc gcc c++ g++
ln -s gcc-4.2 cc
ln -s gcc-4.2 gcc
ln -s c++-4.2 c++
ln -s g++-4.2 g++
Сделайте запись о текущих объектах связи, чтобы вы могли восстановить их, если хотите.
Если вы не хотите изменять общесистемные настройки,
В окне Project или Target Info установите сборку установка «Версия компилятора C / C ++» (GCC_VERSION).
Или в окне целевой информации вы можете изменить «Правило системы C» на вашу любимую версию GCC.
Обновление: Что касается командной строки, я бы оставил Leopard решение о том, какой компилятор должен быть по умолчанию. Если вы хотите использовать другой компилятор с такими инструментами, как Autotools configure, вам лучше определить переменную CC.
CC=gcc-4.2 ./configure
или
export CC=gcc-4.2
Поскольку ни Apple, ни Darwin Ports не имеют программы gcc_select для изменения версии по умолчанию системного компилятора (как существует в GNU / Linux), Я хотел бы быть в безопасности с XCode (и остальной частью системы) и рекомендовал бы оставить символические ссылки как есть и вместо этого установить переменные среды, которые переопределяют, какую версию GCC использовать.
В моем. файл профиля у меня есть следующий
export CC=/usr/bin/gcc-4.2
export CPP=/usr/bin/cpp-4.2
export CXX=/usr/bin/g++-4.2
И я успешно скомпилировал следующие библиотеки с GCC 4.2 из исходного кода.
Однако ... Я не удалось заставить Boost 1.39 подтвердить переменные среды, поэтому для компиляции Boost с GCC 4.2 мне нужно было изменить символические ссылки в / usr / bin /, чтобы они указывали на gcc v4.2
После долгой компиляции библиотек Boost с GCC 4.2 я восстановил символические ссылки на исходную версию системы gcc-4.0.