Ensure baseGet and result work with strings on nested objects.

This commit is contained in:
jdalton
2015-04-14 22:34:32 -07:00
parent 0e8277ba9e
commit 8581be4977
2 changed files with 9 additions and 3 deletions

View File

@@ -2305,7 +2305,7 @@
length = path.length; length = path.length;
while (object != null && ++index < length) { while (object != null && ++index < length) {
var result = object = object[path[index]]; var result = object = toObject(object)[path[index]];
} }
return result; return result;
} }
@@ -10021,7 +10021,7 @@
if (object != null && !isKey(path, object)) { if (object != null && !isKey(path, object)) {
path = toPath(path); path = toPath(path);
object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1)); object = path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));
result = object == null ? undefined : object[last(path)]; result = object == null ? undefined : toObject(object)[last(path)];
} }
result = result === undefined ? defaultValue : result; result = result === undefined ? defaultValue : result;
} }

View File

@@ -13159,12 +13159,18 @@
}); });
}); });
test('`_.' + methodName + '` should get characters of string indexes (test in IE < 9)', 4, function() { test('`_.' + methodName + '` should get characters of string indexes (test in IE < 9)', 8, function() {
_.each([1, [1]], function(path) { _.each([1, [1]], function(path) {
_.each(['xo', Object('xo')], function(string) { _.each(['xo', Object('xo')], function(string) {
strictEqual(func(string, path), 'o'); strictEqual(func(string, path), 'o');
}); });
}); });
_.each([{ 'a': 'xo' }, { 'a': Object('xo') }], function(object) {
_.each(['a[1]', ['a', '1']], function(path) {
strictEqual(func(object, path), 'o');
});
});
}); });
test('`_.' + methodName + '` should get a key over a path', 2, function() { test('`_.' + methodName + '` should get a key over a path', 2, function() {