下划线.js,从一个对象中获取两个项目并添加到顶部

Underscore.js, get two items from an object and add to the top

本文关键字:项目 两个 添加 顶部 js 一个对象 获取 下划线      更新时间:2023-09-26

>我有一个看起来像这样的对象

{
 "AF" : {
   "name" : "Afghanistan"
 },
 "AL" : {
   "name" : "Albania"
 }
}

它有所有国家的对象。

我想做的是从某些ISO复制对象并将它们添加到对象的顶部(不删除原始对象)。

我开始做的是这样的:

var filtered = _.collect(data, function(item, key){
    if($.inArray(item.iso, ['US','CA']) !== -1) {
            return item;
    }
});

这给了我一个数组,其中包含对象。 但是,如何将这些添加到原始对象中?

谢谢!

正如@mu-is-too-short所说,JS对象没有强制的属性排序。

此外,对象的属性没有您所依赖的iso属性。看到该:)后,请编辑您的问题

如果你的代码依赖于此,那么你就走错了路。正如他所建议的,你应该改用数组,但你可以将对象保留在其中。我假设您从问题中首先显示的对象文本的结构开始。使用此代码段,您将创建一个具有默认顺序的数组,然后将过滤后的对象添加到该数组的头部:

var data = {
  "AF" : {
    "name" : "Afghanistan"
  },
  "AL" : {
    "name" : "Albania"
  }
};
var countries = _.collect(data, _.identity);
var repeated = [];
_.forEach(countries, function(country) {
  if (repeatsAtTheTop(country)) {
    // Added in reverse order so it preserves the  
    // original once unshifted into the original array
    repeated.unshift(country);
  }
});
_.forEach(repeated, function(item, index) { countries.unshift(item) });