Как удалить элемент массива в js и сделать его значения уникальными?
Array#some(), Array#every(), Array#forEach() и куча других.
Они используют внутри себя цикл, но:
— проходят только по тем элементам, для которых были определены индексы (как и for in)
— не проверяют пользовательские свойства (для чего в for in пришлось бы проверять на hasOwnProperty + на соответствие свойства типу Number)
Так что, при прочих равных, лучше использовать их.Удаляем первое вхождение
Альтернатива разумному способу, предложенному localghost, — поиск с помощью Array#indexOf()removeOne(17, [3, 5, 17, 8, 17, 34, 5]);

function removeOne (value, array) {
	array.some(function (_value, index, _array) {
		if (_value == 17) {
			_array.splice(index, 1);
			return true;
		}
	}, array);
	console.log(array);
}Удаляем каждое вхождениеremoveAll(17, [3, 5, 17, 8, 17, 34, 5]);

function removeAll (value, array) {
	array.forEach(function (_value, index, _array) {
		if (_value == 17) {
			_array.splice(index, 1);
		}
	}, array);
	console.log(array);
}Создаём новый массив с уникальными элементами (или заменяем текущий)makeUnique([3, 5, 17, 8, 17, 34, 5]);

function makeUnique (array) {
	var newArray = [];

	array.forEach(function (_value, index) {
		if (newArray.indexOf(_value) < 0) {
			newArray.push(_value);
		}
	});
	array = newArray; // По необходимости
	console.log(newArray);
}
Если и есть такой метод, то внутри него всё равно будет перебор. Это неизбежно.