Вы на правильном пути. Просто использование функции было неправильным. Я повторно использовал код и обновил его, чтобы он работал нормально. Для функции $ .each первое значение - это индекс ( docs ), который был основной причиной ошибки.
Я обновил код, и он отлично работает.
var arr = [
['a1','b1','c1','d1'],
['a1','e1','i1','j1'],
['a1','f1','k1','l1'],
['a1','g1','m1','n1'],
['a1','h1','o1','p1'],
['a2','b2','c2','d2'],
['a2','e2','i2','j2'],
['a2','f2','k2','l2'],
['a2','g2','m2','n2'],
['a2','h2','o2','p2']
];
obj = {}
$.each(arr,function(index)
{
obj[arr[index][0]] = obj[arr[index][0]] || {}
obj[arr[index][0]][arr[index][1]] = arr[index].slice(2);
});
console.log(obj)
Примечание: Решение является специфическим для вышеуказанного требования. Тем не менее, он может быть обобщен с помощью рекурсии.
Надеюсь, это поможет. Возврат для любых сомнений / разъяснений.
От Выбора статьи Ваш драйвер JDBC во времени выполнения ; я просто собираюсь отправить код здесь для ссылки.
идея состоит в том, чтобы обмануть менеджера по драйверу в размышление, что драйвер был загружен из системы classloader. Чтобы сделать это, мы используем этот класс:
public class DelegatingDriver implements Driver
{
private final Driver driver;
public DelegatingDriver(Driver driver)
{
if (driver == null)
{
throw new IllegalArgumentException("Driver must not be null.");
}
this.driver = driver;
}
public Connection connect(String url, Properties info) throws SQLException
{
return driver.connect(url, info);
}
public boolean acceptsURL(String url) throws SQLException
{
return driver.acceptsURL(url);
}
public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException
{
return driver.getPropertyInfo(url, info);
}
public int getMajorVersion()
{
return driver.getMajorVersion();
}
public int getMinorVersion()
{
return driver.getMinorVersion();
}
public boolean jdbcCompliant()
{
return driver.jdbcCompliant();
}
}
Этот путь драйвер, который Вы регистрируете, имеет тип DelegatingDriver
, который загружается системой classloader. Теперь просто необходимо загрузить драйвер, Вы действительно хотите использовать использование безотносительно classloader, Вы хотите. Например:
URLClassLoader classLoader = new URLClassLoader(new URL[]{"path to my jdbc driver jar"}, this.getClass().getClassLoader());
Driver driver = (Driver) Class.forName("org.postgresql.Driver", true, classLoader).newInstance();
DriverManager.registerDriver(new DelegatingDriver(driver)); // register using the Delegating Driver
DriverManager.getDriver("jdbc:postgresql://host/db"); // checks that the driver is found
Проблема DriverManager
, выполняет "задачи с помощью экземпляра загрузчика класса непосредственной вызывающей стороны". См. Инструкцию 6-3 Безопасные Инструкции по Кодированию для Языка программирования Java, версии 2.0 . Системный загрузчик класса никоим образом не является особенным в этом случае.
Только для ударов, я записал запись в блоге на этом предмете некоторое время назад. Мое решение, хотя более сложный затем решение Nick Sayer, является больше завершенным и даже работает из недоверяемого кода. Также примечание URLClassLoader.newInstance
предпочтено более чем new URLClassLoader
.