[英]Array manipulation based on inner object property value?
我正在使用wordpressAPI來檢索信息並將其顯示在javascript應用程序中。 我想知道基於返回的對象中的數據操作數組的正確方法。 例如:
我得到的數據是一個包含3個對象的數組:
data = [{...}, {...}, {...}]
這些對象包含如下數據:
{ id: 1234, slug: 'slug-name', status: 'published' }
..以及更多。 但是我想知道的是如何遍歷每個對象並檢查slug ==='slug-name-2',如果是,我想將整個對象及其所有信息移至數據數組的開始。
這是一種方法
//find index of the slug-name-2
let index = data.findIndex((x => x.slug === 'slug-name-2');
//get object
let slug = data[index];
//remove from current location
data.splice(index)
//add it to the beginning
data.unshift(slug);
我敢肯定,可以提出100多種方法,也許是更有效的方法。
看一下Array.Prototype方法 ,那里有很多方法 ,您可以使用幾種方法的組合並以多種方式操作數組。
您可以根據條形字符串對其進行排序 。
let data = [ { id: 1234, slug: 'slug-name', status: 'published' }, { id: 1235, slug: 'slug-name-1', status: 'published' }, { id: 1236, slug: 'slug-name-2', status: 'published' }, { id: 9999, slug: 'slug-name-2', status: 'published' }, { id: 1237, slug: 'hello', status: 'published' } ]; let sortedData = data.sort((a, b) => b.slug.indexOf('slug-name-2') - a.slug.indexOf('slug-name-2')); console.log(sortedData);
您可以通過許多不同的方式執行此操作,一種方式是對給定的鍵和值對數組進行“偽排序”:
const input = [ { id: 1234, slug: 'slug-name-0', status: 'published' }, { id: 1234, slug: 'slug-name-1', status: 'published' }, { id: 1234, slug: 'slug-name-2', status: 'published' }, { id: 1234, slug: 'slug-name-3', status: 'published' }, { id: 1234, slug: 'slug-name-4', status: 'published' } ] const output = input.sort((a, b) => { if (b.slug === 'slug-name-2') return 1; return 0; }) console.log(output);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.