我有一个对象,其中包含数组形式的对象的键对值:
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)。
这种情况下如何得到预期的结果呢?
您可以使用Object.values和flat:
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)