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])
+})