如何合并数组?及如何为JavaScript File对象添加preview属性?
Hey there! Let's break down your two questions step by step:
There are several practical ways to merge arrays in JavaScript, each suited to different scenarios:
Using the
concat()method
This creates a brand new array without altering the original two arrays—perfect if you need to keep your source data intact.const arr1 = [1, 2, 3]; const arr2 = [4, 5, 6]; const mergedArray = arr1.concat(arr2); // Result: mergedArray = [1,2,3,4,5,6]; arr1 and arr2 stay unchangedUsing the spread operator (
...)
A clean, modern approach that also returns a new array. You can merge multiple arrays at once with this method too.const arr1 = [1, 2, 3]; const arr2 = [4, 5, 6]; const mergedArray = [...arr1, ...arr2]; // Result: mergedArray = [1,2,3,4,5,6]Using
push()to modify the original array
If you don't need to preserve the first array, this method adds all elements from the second array directly to the first one.const arr1 = [1, 2, 3]; const arr2 = [4, 5, 6]; arr1.push(...arr2); // Result: arr1 becomes [1,2,3,4,5,6]; arr2 remains the same
preview property to your File object When you grab a File object via myItem.getAsFile(), it's a browser-built instance of the File type. You have two solid options to add your preview URL alongside its existing properties:
Option 1: Directly attach the preview to the File object
JavaScript lets you add custom properties to built-in object instances, so this works seamlessly:
const item = myItem.getAsFile(); const preview = window.URL.createObjectURL(item); // Add the preview property directly to the item item.preview = preview; // Now you can access item.preview, plus all original properties like item.name, item.size, etc.
Option 2: Create a new combined object (no modification to original File)
If you want to leave the original File object untouched, create a new object that includes all its properties plus the preview URL. Since some File properties aren't enumerable, we'll explicitly include them:
const item = myItem.getAsFile(); const preview = window.URL.createObjectURL(item); const itemWithPreview = { lastModified: item.lastModified, name: item.name, size: item.size, type: item.type, webkitRelativePath: item.webkitRelativePath, preview: preview, // Optional: include the original File if you need it later originalFile: item }; // Use itemWithPreview.preview, itemWithPreview.name, etc.
Important reminder: When you're done using the preview URL (like when the image is no longer displayed), revoke it to free up browser memory:
window.URL.revokeObjectURL(preview);
内容的提问来源于stack exchange,提问作者Marian Rick

