【发布时间】:2020-04-10 22:56:21
【问题描述】:
我将值推送到 forEach 循环内的数组中。当我在循环外调用数组时,我得到了这些值:
d.data:
[{hello: 'abc', asd: '123', fgh: '345' }]
[{sdfg: '123', yo: 'ghj', fgh: '345' }]
[{gd: '123', asd: '123', bonjour: 'yui' }]
[{hello: '123', asd: '567', fgh: '345' }]
forEach 循环:
let str_arr = [];
d.data.forEach(recs => {
each_keys = Object.keys(recs);
each_vals = Object.values(recs);
each_vals.forEach(k => {
if (typeof k == 'string') {
find_key = Object.keys(recs).find(key => recs[key] === k);
str_arr.push(find_key);
}
});
});
str_arr:
["hello", "hello", "hello"]
["yo", "yo", "yo"]
["bonjour", "bonjour", "bonjour"]
[]
console.log(typeof str_arr[0] + ' = ' + str_arr[0]
结果:
string = hello
string = yo
string = bonjour
undefined = undefined
我想将所有 str_arr[0] 推入一个数组,所以我这样做?
let string_array = [];
if (str_arr[0] !== undefined) {
string_array.push(str_arr[0]);
}
console.log(string_array);
我的结果是:
hello
yo
string
(empty)
为什么我的结果中仍然出现未定义的值?
【问题讨论】:
-
可以分享
array的内容吗? -
@ManuelAbascal,你在说 str_arr 吗?
-
我认为你需要展示整个代码示例才有意义。
-
您能否发布更多显示整个过程的代码,包括 for 循环?
-
我同意您需要发布一个可以执行的示例。但顺便说一句,您可能需要考虑使用
.filter()developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 而不是像您正在做的那样循环和推送。
标签: javascript jquery arrays json undefined