如何在看起来像数组的对象上使用 join() ?

pil*_*eup 1 javascript

我有一个对象,其中包含数组形式的对象的键对值:

let obj = {};
let joinedData;

obj["key1"] = ["val1", "val2"];
obj["key2"] = ["val3", "val4"];
Run Code Online (Sandbox Code Playgroud)

我想将所有值连接在一起作为一个字符串:

for (const [key, values] of Object.entries(obj)) {
    joinedData = `${values.join(",")}`;
}
Run Code Online (Sandbox Code Playgroud)

预期结果是"val1,val2,val3,val4"

joinedData是空空如也。

我怀疑这是因为它们values是对象而不是数组(当我使用时typeof)。

这种情况下如何得到预期的结果呢?

tri*_*cot 7

您可以使用Object.valuesflat

let obj = { key1: ["val1", "val2"], key2: ["val3", "val4"] };
let joinedData = Object.values(obj).flat().join();

console.log(joinedData);
Run Code Online (Sandbox Code Playgroud)

如果您有一些包含空字符串的数组,那么您可能需要使用以下方法过滤掉它们filter(Boolean)

let obj = { key1: ["val1", "val2"], key2: ["val3", "val4"], key3: [""], key4: [""] };
let joinedData = Object.values(obj).flat().filter(Boolean).join();

console.log(joinedData);
Run Code Online (Sandbox Code Playgroud)