按字段名称在新的 JS 过滤数组中移动 JS 数组行
Posted
技术标签:
【中文标题】按字段名称在新的 JS 过滤数组中移动 JS 数组行【英文标题】:Move JS arrays rows in a new JS filtered array by field name 【发布时间】:2018-06-01 17:10:42 【问题描述】:我有一个json格式的JS数组,比如这个:
一旦用户将看到所有行,就有一个选项可以仅按特定顺序过滤特定字段。我可以过滤这些字段,但我现在正尝试让它们也按特定顺序重新排序。
例如,用户按特定顺序选择了这三个字段,请查看右侧列表:
我只想按特定顺序过滤掉这三列:
开放时间
开启方式
exdoorid
我现在有什么选择,我怎样才能只将这些特定的行推送到一个新数组中,以便稍后用作过滤数组?
【问题讨论】:
【参考方案1】:您可以run through your array 并在其中检查属性名称是否在您的字段列表中。您将所需内容添加到一个对象中,然后将其推送到您的列表中。
var arr = [
opentime: 'opentime1', openingmode: 'openingmode1', extdoorid: 'extdoorid1', automaticchangestableid: 'acsid1', extdoorid: 'edid1',
opentime: 'opentime2', openingmode: 'openingmode2', extdoorid: 'extdoorid2', automaticchangestableid: 'acsid2', extdoorid: 'edid2',
opentime: 'opentime3', openingmode: 'openingmode3', extdoorid: 'extdoorid3', automaticchangestableid: 'acsid3', extdoorid: 'edid3'
];
var fieldList = [ 'automaticchangestableid', 'opentime', 'extdoorid'];
var newArr = [];
angular.forEach(arr, function(value, index)
var obj = ;
angular.forEach(fieldList, function(field, fieldIndex)
obj[field] = value[field];
);
newArr.push(obj);
);
console.log(newArr);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
【讨论】:
谢谢,这与我需要的非常接近,但你认为我们可以稍微重新调整一下吗,因为例如,如果将 openingmode 设置为表中的第一项,opentime 设置为第二项,则数组仍然以原始顺序显示它们i.gyazo.com/7c4f69900a42019569417b1d7fdd25c5.png你怎么看?谢谢 抱歉,现已修复。 :) 谢谢。差不多了。你知道为什么在内部循环结束时数组默认按字母顺序排序吗? 按字母顺序排序?它将按照您插入的方式进行排序。如果先插入openingmode
,再插入extdoorid
,就会是openingmode: x, extdoorid: y
出于某种奇怪的原因,它会将数组更改为按字母顺序排序,然后再将它们推送到真正的数组 i.gyazo.com/bf1feaaee22a86f2387ae193b4477733.png 尽管在 foreach 循环期间它循环正常以上是关于按字段名称在新的 JS 过滤数组中移动 JS 数组行的主要内容,如果未能解决你的问题,请参考以下文章