javascript - 是什么导致此处未定义,我该如何以某种方式将其删除?
问题描述
我已经过滤并减少了数据。然后,我也可以在屏幕上显示它。我只是想知道,是什么导致了undefined
这里,我怎样才能删除它,或者我怎样才能让它在屏幕上不可见?
这也在代码框中:https://codesandbox.io/s/filter-sr3ci?file=/src/App.js: 0-2255
export default function App() {
const data = [
{
displayName: "Person1",
"1": { others: "novella", items1: { car: true, motor: true } }
},
{
displayName: "Person2",
"1": {
others: "novella",
items1: { car: true, motor: true, bike: true }
},
"2": { items2: { truck: true, bike: true }, others: "wire" }
},
{
displayName: "Person3",
"1": { others: "book", items1: { car: true, bike: true } },
"2": {
others: "wire",
items2: { bike: true, motor: true, truck: true }
}
},
{
displayName: "Person4",
"1": { others: "book", items1: { car: true, bike: true } },
"2": { others: "", items2: { truck: true, bike: true } }
},
{
displayName: "Person5",
"1": { others: "novella", items1: { motor: true, car: true } },
"2": {
items2: { truck: true, bike: true },
others: "fan"
}
},
{
displayName: "Person6",
"2": {
items2: { car: true, truck: true, motor: true },
others: "fan"
}
},
{
"1": { others: "book", items1: { motor: true, car: true } },
"2": {
items2: { car: true, truck: true },
others: "fan"
},
displayName: "Person7"
}
];
const others1 = data.filter((d) => d["1"]?.others !== "");
const others2 = data.filter((d) => d["2"]?.others !== "");
let red = others1.reduce(
(a, c) => ((a[c["1"]?.others] = (a[c["1"]?.others] || 0) + 1), a),
{}
);
let red2 = others2.reduce(
(a, c) => ((a[c["2"]?.others] = (a[c["2"]?.others] || 0) + 1), a),
{}
);
// let ar = [];
// let json = "";
// for (let [key, value] of Object.entries(red)) {
// console.log(key, value);
// ar.push(key, value);
// json = JSON.stringify(ar);
// }
function objToString(obj) {
let str = "";
for (const [p, val] of Object.entries(red)) {
str += `${p}:${val}\n`;
}
return str;
}
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
{/* {json} */}
{objToString()}
<h2>Start editing to see some magic happen!</h2>
</div>
);
}
解决方案
那么要回答你的问题,你可以简单地这样做来解决你的问题。请注意, p 是一个对象键,它在这里以某种方式变得“未定义”。所以你需要检查它是否有字符串“未定义”。您的实际问题应该是为什么要设置未定义的键
if (p !== "undefined") {
str += `${p}:${val}\n`;
}
推荐阅读
- android - 另一个 recyclerview 适配器中的 Recyclerview 未显示与项目相关的项目
- .htaccess - 为共享 Drupal 8 代码库的六个站点中的三个强制 SSL
- c++ - 获取对存储在打开窗口 OpenCV 中的矩阵的引用
- angular - 角。订阅内部服务
- r - 编辑传单 labelFormat 的源代码以编辑中断/刻度线
- c++ - 当我以 c mex 格式编写相同的代码时,矩阵乘法很耗时
- spring-boot - org.springframework.security.access.AccessDeniedException:访问被拒绝
- forms - 向 React Native Forms 添加表单验证的最佳方法
- php - 如何拆分名称并使用函数显示设置结果
- c++ - 可以从 Windows DLL 中的全局变量创建/销毁 std::threads 吗?