如何在jQuery中将数据推送到另一个数组中,而不将NAN附加到结果中?
我有两个数组在我的jQuery和我想要做的就是推动我的要求的格式第一阵列的数据到其他数组:比如下面是我的数组的给定:如何在jQuery中将数据推送到另一个数组中,而不将NAN附加到结果中?
var mine = [
{"new":"new"},
{"old":"old"}
];
var mynew = [];
现在我希望把我的mine
阵列的数据以这种方式到mynew
阵列。
jQuery.each(mine, function() {
jQuery.each(this, function (name, data) {
mynew.push({text: +"'"+name+"'"+ ', value: ' +"'"+data+"'"});
});
});
和我需要的输出应该类似如下所示:
[
{text: 'new', value: 'new'},
{text: 'old', value: 'old'}
]
我这样做是正确的,我认为,但结果数据是某些东西一样如下图所示:
Object {text: "NaNnew', value: 'new'"}
这显然不是我想要的......任何人都可以为我打印我想要的布局吗?
在提问试试这个
jQuery.each(mine, function() {
jQuery.each(this, function (name, data) {
mynew.push({text: name , value: data });
});
});
哇,拯救了我的整个一天兄弟的生活救星...再次感谢很多,真的很喜欢你的答案,因为它的工作就像一个魅力....很好:) – laraib
欢迎你,但请让这个答案接受了! :) –
尝试,
jQuery.each(mine, function() {
jQuery.each(this, function (name, data) {
mynew.push({ text: name, value: data});
});
});
然后请接受它 – azad
的NaN
是评估+"'"
的结果是试图'
转换为评估一元+
操作员编号。也就是说,你
不必
不应该使用字符串连接这种方式创建对象!
{text: (+"'") + (name) + ("'") + (', value: ') + ("'") + (data) + ("'") }
//{text: "NaName', value: 'data'"}
这甚至不创造价值key
,而不是仅仅有text
键有长长的一串。
使用简单的对象创建语法。
mynew.push({text:name, value:data});
如果您想将Object转换为字符串,以后总是可以使用JSON.stringify
。
问题与javascript
是
text: +"'"+name+"'"+ ', value: ' +"'"+data+"'"
不需要加引号。您已经检索到值data
,在这种情况下,它是一个字符串。 name
是数组当前元素的index
,而不是值。您可以在javascript
在问代以下线上面的一行
mynew.push({text:data, value:data});
注意使用该模式,嵌套调用$.each()
没有必要返回预期的结果。可以使用Array.prototype.map()
,Object.keys()
var mine = [
{"new":"new"},
{"old":"old"}
];
var mynew = mine.map(function(obj) {
var value = obj[Object.keys(obj)[0]];
return {text:value, value:value}
});
console.log(mynew);
替代地使用.map()
,对象解构,计算属性,"new"
属性,其中new
操作者是在javascript
的保留字,箭头功能
var mine = [
{"new":"new"},
{"old":"old"}
];
var mynew = mine.map(({["new"]:n, old:o}) => ({text:(n||o), value:(n||o)}));
console.log(mynew);
为什么在使用'Array#map'时使用'$ .map'? https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map – Punit
@Punit好点。 – guest271314
查看Array.filter的document。特别注意回调参数:
测试数组中每个元素的函数。用参数调用(元素,索引,数组)。返回true以保持元素,否则返回false。 因此,在你的情况下,ARR是元素(并且名字不好,因此你的困惑)。过滤循环你的数组,并为它调用的每一个项目回调传递当前位置的元素作为arr。
正如其他人在评论中指出的那样,你的过滤器回调的逻辑实际上是负值的缺陷,但如果你知道你的数组永远不会包含负值(但这可能是一个问题危险的假设)。
而且,当然,在内部,这是通过你的数组循环。你不能过滤你的(未分类的)数组而不触及数组中的每个元素。查看链接中的polyfil以了解它可能的工作原理(可能是因为这是一个实现细节,可能会因不同的JavaScript引擎而有所不同,但无疑会涉及到某个循环),它循环遍历数组,调用回调(注意参数),如果回调函数返回true,它会被推送到结果数组中。
开始时删除'+“'”''。它充当一元运算符并尝试将操作数转换为数字。 – sabithpocker