diff --git a/README.md b/README.md
index aa044d8..6892e30 100644
--- a/README.md
+++ b/README.md
@@ -366,6 +366,10 @@ LeetCode 与 LintCode 解题记录。此为个人练习仓库,代码中对重
- LeetCode 1431. 拥有最多糖果的孩子
+- [除自身以外数组的乘积](src/array/product-of-array-except-self.js)
+
+ - LeetCode 238. 除自身以外数组的乘积
+
## 栈
- [最大矩阵](src/stack/maximal-rectangle.js)
diff --git a/src/array/product-of-array-except-self.js b/src/array/product-of-array-except-self.js
new file mode 100644
index 0000000..d57a1e7
--- /dev/null
+++ b/src/array/product-of-array-except-self.js
@@ -0,0 +1,21 @@
+/**
+ * @param {number[]} nums
+ * @return {number[]}
+ */
+export const productExceptSelf = function (nums) {
+ const ans = []
+ for (let i = 0, len = nums.length; i < len; i++) {
+ let tmpL = 1
+ let tmpR = 1
+ for (let j = 0; j < len; j++) {
+ if (j < i) {
+ tmpL *= nums[j]
+ } else if (j > i) {
+ tmpR *= nums[j]
+ }
+ }
+ ans.push(tmpL * tmpR)
+ }
+
+ return ans
+}
diff --git a/test/array/product-of-array-except-self.test.js b/test/array/product-of-array-except-self.test.js
new file mode 100644
index 0000000..293b73a
--- /dev/null
+++ b/test/array/product-of-array-except-self.test.js
@@ -0,0 +1,5 @@
+import { productExceptSelf } from '../../src/array/product-of-array-except-self'
+
+test('除自身以外数组的乘积', () => {
+ expect(productExceptSelf([1, 2, 3, 4])).toEqual([24, 12, 8, 6])
+})