35
Sự khác nhau giữa hai phương thức này khi lặp qua một đối tượng là gì?Sự khác biệt giữa _.forEach và _.forOwn trong lodash
Sự khác nhau giữa hai phương thức này khi lặp qua một đối tượng là gì?Sự khác biệt giữa _.forEach và _.forOwn trong lodash
Sự khác biệt nằm ở chỗ nếu bộ sưu tập hơn mà bạn đang lặp lại là một đối tượng trong đó có một tài sản length
thì _.forEach()
sẽ lặp trên nó như thể nó là một mảng, trong khi _.forOwn()
sẽ lặp trên nó như một đối tượng .
Giả sử bạn có các đối tượng:
a = {
x: 100,
y: 200,
length: 2
}
Nếu bạn lặp qua nó như:
_.forEach(a, function(val, key) {
console.log('a[' + key + '] = ' + val);
});
bạn sẽ nhận được kết quả:
a[0] = undefined
a[1] = undefined
trong khi iterating trên nó với _.forOwn()
bạn sẽ nhận được hợp lý hơn:
a[x] = 100
a[y] = 200
a[length] = 2